InternalMemo1XEROXToFromImagingInterest^.paMichaelPlassPlass.paSubjectDatePeachPDprintersSeptember24,19849:12:15amPDTPeachPDprintersandhowtousethemWhatisaPeachprinter?APeachprinterisaprinterthatisrunningunderthecontrolofthePeachexperimentalprintersoftware.ThePeachsoftwareiswritteninMesa11andrunsunderthePilotoperatingsystemonaDicentra.TheDicentra(whichisbasicallyastripped-downDandylionrunningonaMultibus)mayormaynothaveadiskattached;ifitdoeshaveone,itisusedonlyasagiantbufferforthepageimage,andhasnofilesystem.PeachprintersprintPDfiles,andnothingelse.OK,thenwhatisaPDfile?APDfileisafileinPrinterDependentformat.See[Indigo]Docs>*.pressforinformationontheformatofPDfilesandhowtoprintthemonAlto/Slotmachines.However,youshouldactuallynotneedtoknowanythingaboutPDfiles,exceptperhapsthattheyareawayforanInterpressimplementationtogetthebitstoaprinter.Also,ifyouareinterestedinmakingVLSIplots,youneedtomakePDfilesdirectlyfromChipNDale,sincewedon'tunderstandyethowtoexpressoverlappingtransparentcolorsinadevice-independentway.WhatPeachprintersarethere?RightnowtherearetwoPeachprinters.OneisadisklessoneconnectedtoaRaventhathasbeenmodifiedtorunat384spotsperinchinsteadof300;itsnameisMelbaanditcanbefoundinroom2322ofbuilding35.TheotheroneisCSL's4-colorVersatecplotter.IfyouusedearlierversionofthePeachsoftwarethatusedRPCasaprotocol,youwereusedtocallingthismachinebythenameofBelle;however,theDicentra'srealnameisSleepy,andthisiswhatyoumustcallitnow.Maybewecangetthenameofthismachinechanged,sincePeachprintersaresupposedtobenamedaftervarietiesofpeaches.HowdoItalktoaPeachprinter?TotalktoaPeachprinter,youuseChat.ThismeansyoucanuseaPeachprinterfromanyenvironmentthatcanusethePup/telnetprotocol,includingCedar,pf]qfCNrf{sb ]b 2Pq`e]`e2P7^2PsT]T2PqS*]VS*2P9< >@<] B$'+1%27[9<>A~:[]b !,%'(/d2>7>z+y]&M %d*m,0#15u;>AS)] #$F' )`+S 1 ;=J?A(+]]!$6 *,X1U58;?"@&] '+-a1 8c:=?$]  $%&3u!]'IS v>  #'-02=3p8x;,ACo]wF$ %(b),0 2|5:<;?@]#%@(,'-3R6 8<|?$@H]| "7$(,Z125'9#>A]] $*')X-06H8e:>@]? ,"&(,/2R37&9=Q?A=R]4] |$v&j)G/5 8<BE]g"(*)u\]s,a!v iCa %(n+/27):<?I@ f]1 #&w(+R- 4s:'@)TVm$DInternalMemo2Tajo,Alto,Lisp,Smalltalk,Vaxc,andevenvisDLSoveraphoneline.YoucanalsotalktoaPeachprinterusingtheprinter'sterminal(usuallyaglassTTY),ifithasone.ThepeachprinterqueuestherequeststhatitreceivesviaitsChatconnections,andprocessesthemoneatatime.Therequestsspecifyafullpathname,i.e.,print[Indigo]384>TestPattern.pdandwhentheprinterisreadytoprintthefile,itwillretrieveitusingthePup/FTPprotocol.IfyouarerunningCedar,youcanstartupSTPServerandhavethePeachprintergetyourPDfiledirectlyfromyourdisk.Forexample,ifyouhadcreatedthefile[]<>Users>BCDull.pa>Chip.pdonthemachineXyz,youwouldsayprint[Xyz]Users>BCDull.pa>Chip.pdtothechattool.WhatdoIsay?Thefirstthingyoudoislogin,justasifyouwerechattingtoanIFS(ifyouarechattingfromCedar,theChatprogramwillloginforyou).YourusercredentialswillbesavedsotheservercanusethemwhenitgoestofetchyourPDfile.NextsayHelptogetthelistofpossiblecommands.Youwillprobablybeabletoplayitbyearfromthere,butjustforcompleteness,herearethecommandsandwhattheydo:Login[]Tellstheserverwhoyouare.CancelCancelstheindicatedrequest.CheckTellsthestatusoftheindicatedrequest.Notethatiftherequesthasfinishedprinting,thestatuswillbe"notfound".HelpGivesalistofcommands.ListQueueDisplaysthecurrentqueueofrequests,andtellsifprintingissuspended.MessagesThePeachprinterkeepsalogofmessagesthatmaybeofinterest;theyaredisplayedontheprinter'sterminalastheyaregenerated.Thiscommandmaybeusedtoexamineallorpartofthemessagelog.Onlymessagescontainingthestringwillbeshown(sorry,nopatternmatching).Anemptystringwillgetyoueverything.Twointerestingstringstouseareyourusername(toseewhathappenedtoallyourrequests),andarequestnumber(e.g.,R033),tofindoutwhathappenedtoaparticularrequest.PrintMakesaprintrequest.OnmachinesliketheVersatec,thetitlestringwillappearinthetitleblocksthatseparatepages.ReprintReprintsthecurrentpageimage.ResetQueueClearsouttheprintqueueandthemessagelog.Excessiveuseofthis��pf]qfCN�vb2] "&)R,.2T5�6;>B`]8�"&](.H39 �:C=ACC^](\$),u2%5I6<w? A<]<] [8"[& (*�+04328=s�>Ar[]uY!V]" #%(+R./f27 8`<>dT]#'w* ,/18d; >E@SP]T  %),X0>28:E= ?Q]&(*-258~<O-#L] keuIc]'� vF H"[#'*`,-0H38:<?ADl] i"%+k-1c37c:= B]"$''*.r/248;`=A-A]a!#d%&*q2E5^8=?B?v]"$'x) 258[:A=];S]^ ! w9n)6 :"v70]sw5n v3 ]&w1fn)�!' ,0334b6;> /A; "$'v-C]w+nY�zv) ]w'xn] &$J&+.l1O279] v$]ew#UnFI"�#&-'-0357><?!A`f$4)+[.k0 7:A` A2n "$I',(+E037== _Av"#a').u 58<U@+AA $ */03<58;?AA!$ *-�.38<6@iA/#Y%�&1 ,gv] 1!wFn�e"$s*|-'/5d7:>fAv#&,v$]w|n h 2#yv �] w Yn|$&).v17:8;���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������InternalMemo3commandmaygeneratepeerpressure.SetLoginMessage<message>Setsthemessagepeoplegetwhentheylogin;saywhatyouwill,butrememberthemessagewillhaveyournameonit.StartUn-suspendstheprinter.StopSuspendstheprinterassoonasitfinishesthecurrentrequest.Wait<requestnumber>Doesnotreturnuntiltheindicatedrequestiscompleted,eithernormallyorabnormally.UsefulforsynchronizingthedeletionofaPDfile.QuitCausestheservertoclosethechatconnection.Ifyouloginattheprinter'sterminal,besuretoquitsothattheterminalcanbeusedtodisplaymessagesagain.DoIhavetouseChattoprintmyPDfiles?Yes,rightnowyoudo.MaybesomeonewillstepforwardtowriteaCedarinterfacethatgoesthroughttheChatprotocol,ortoaddanRPCinterfaceforqueueingprintrequests.Inanycase,whentheInterpressserverbecomesreal,itwilldothetalkingtothePDprinter,soyouwon'thaveto.AccordingtotheChatdocumentation,itoughttobepossibletowriteacommandfileforissuingaprintingrequest.���pf]qfCN�wb0A#*&Ev_]9w^ nR "$(+/15D7:=\fA!%%(*vY]wXDn vU]wT!n t""%h'(l-l/4vQ]>wOnl #A)4. /u 6|:h@9NXA Z # +.&3s5,�6V8vK]wJ5n jw %#%( 02@48t: <lHA #%S(!*/24u79_>FAuC]�r!+$|&)8v@IQ #(.1f4n9;?3�@>]AN#&))/1368<xB\<]w!g#R&)q-B/ 6::b@CC;S] p!#(p*5,036=->A<9]  M '!#(*m-�.5?79>?�?W8]�������}��������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--PDBitBltTiming.mesa--MichaelPlass,4-Mar-8411:17:27PDBitBltTiming:DEFINITIONS={ResetBitBltMicroseconds:PUBLICPROC;GetBitBltMicroseconds:PUBLICPROCRETURNS[LONGCARDINAL];}.���w_,Y],y Z6d $k�&P�V%WS$N(0+5Z PJ����������������TVm$�@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDChatServerStub.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September11,19843:54:15pmPDTDIRECTORYPupTypes,PupDefs,PupStream,IO,Rope,Stream,PDUser;PDChatServerStub:CEDARPROGRAMIMPORTSPupDefs,PupStream,Stream,PDUser=BEGINNewConnection:PROCEDURE[stream:IO.STREAM,pupAddress:PupDefs.PupAddress]=TRUSTED{otherGuy:Rope.ROPE_PupDefs.GetHostName[pupAddress];s:Stream.Handle_Stream.FromIOStreams[stream,stream];PDUser.TalkWithUser[s!PupStream.StreamClosing=>CONTINUE];Stream.Delete[s];};pupListener:PupStream.PupListener_PupStream.CreatePupByteStreamListener[local:PupTypes.telnetSoc,proc:NewConnection,ticks:PupStream.SecondsToTocks[300]];END.���x_,]/BZ '* -[$ $$) +WyXwXK# y*xX�X*�w+X�X,05U@y8U@�U@SwS $ )Q�yQ�QuN wVN�NySN�NwN# y(YN�N(�w)N�yN)w.N�N/ LO�y!4L�L!wL'"�KTyFKT�KTwKT �"hI �y2H!�"3y5H�H6hw;H�H<:�F^DAh '�?&><r :9#y5w{5�5���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDFileFormat.mesaCreatedMarch14,1983MichaelPlass,April29,198311:01amPDFileFormat:DEFINITIONS=BEGINpasswordValue:CARDINAL=125252B;versionValue:CARDINAL=1B;DeviceCode:TYPE=MACHINEDEPENDENT{invalid(0),raven(1),hornet(2),gnat(3),mig(4),reticleMaker(5),puffin(6),last(LAST[CARDINAL])};Herald:TYPE=MACHINEDEPENDENTRECORD[password(0):CARDINAL_passwordValue,version(1):CARDINAL_versionValue,deviceCode(2):DeviceCode_invalid,sResolution(3):CARDINAL,fResolution(4):CARDINAL,imageSSize(5):CARDINAL,imageFSize(6):CARDINAL,bandSSize(7):CARDINAL,maxLoadWord(8):LONGCARDINAL,copies(10):CARDINAL];Typ:TYPE=MACHINEDEPENDENT{control(0),imaging(2)};ImagingCom:TYPE=MACHINEDEPENDENT{maskSamplesRef(0),maskRunGroupRef(1),maskRectangle(2),maskTrapezoid(3),maskRunGroup(4),maskSamples(5),colorSamples(6)};ControlCom:TYPE=MACHINEDEPENDENT{startImage(0),setPriority(1),setColorInk(2),setColorClear(3),setColorTile(4),endBand(5),endDocument(6),storeLoad(7),deviceCommand(8)};���x_,]T[$!$wYb yYb�Ybn wYb �y"Yb�Yb#FwV yV�VwV!�#}U? yU?�U?rwU? b�"GS y/S�SwS�yS�SS$wS,X�Q PHN LKRIH F[yyF[�F[2w^F[�yF[wF[�F[[�DB9y B9�B9wB9|�yaB9�B9rB9!B9)4wB9.�@ y@�@w@!�#f > y>�>w> �"1 =B  $M�%;y;�;`w";�;9y9�9Uw"9�98K y^8K�8K)w"8K�8K6 y~6�6Iw"6�64 y4�4w"4�43Uy3U�3UT3U"w(3U�3U1 y�1�1w0-yP-�- w-�y-�--w-'y . + y+�+kw+#�y+�+ +%.w+,�)h'&$q"!"{X yeX�XwX�yX�XX$wX,�  ak  t ���������������TVm$������������������������������2transparentFlag:[0..1]=1;opaqueFlag:[0..1]=0;Command:TYPE=MACHINEDEPENDENTRECORD[command(0):SELECTtyp(0:0..1):TypFROMimaging=>[com(0:2..7):ImagingCom,addrHighBits(0:8..15):[0..256)_0],addrHighBitsisusedbythemaskSamplesRefandmaskRunGroupRefcommands.control=>[com(0:2..7):ControlCom,rest(0:8..15):[0..256)_0]restisusedbythesetPriorityandsetColorTilecommands.ENDCASE];SampleArray:TYPE=MACHINEDEPENDENTRECORD[sSize(0):CARDINAL,fSize(1):CARDINALFollowedbytheactualscanlines,eachpaddedouttoaword.];Tile:TYPE=MACHINEDEPENDENTRECORD[phase(0):CARDINAL,sMin(1):CARDINAL,fMin(2):CARDINAL,sSize(3):CARDINAL,fSize(4):CARDINALFollowedbytheactualscanlines,eachpaddedouttoaword.];RunGroup:TYPE=MACHINEDEPENDENTRECORD[sSize(0):CARDINALFollowedbytheRuns.];Run:TYPE=MACHINEDEPENDENTRECORD[fMin(0):CARDINAL,lastRun(1:0..0):BOOLEAN,fSize(1:1..15):NAT];MaskRectangle:TYPE=MACHINEDEPENDENTRECORD[sMin(0):CARDINAL,sSize(1):CARDINAL,fMin(2):CARDINAL,fSize(3):CARDINAL];MaskTrapezoid:TYPE=MACHINEDEPENDENTRECORD[sMin(0):CARDINAL,sSize(1):CARDINAL,fMin(2):CARDINAL,fSize(3):CARDINAL,fMinLast(4):CARDINAL,fSizeLast(5):CARDINAL];���qg/E�w_,@� ] G�,[ y0[ �[ w[ �y[ �[ [ #[ +Zw[ 0�Ya yYa�Ya!wYa U 'ey*HYa�Ya+wWW $ -;`@1�VxTj'  $%(( 25>RwQ^ $k , 49�;xOs'*; "a (+ 37yMwL$I yI�IvwI/�yI�I %I%:I,wI2Y�HyH�H^wH�HFYyFY�FYSxD $'*/@13G�4{wC @yD@�@w@�y@�@@@'nw@,�>y>�>w9>�>=>y=>�=>tw=>�=>;y;�;iw;�;9y9�9^w9�98Gy8G�8GSx6 $'*/@13G�4{w42|y2|�2|8w2|�y2|�2|2|#2|+w2|1�0y0�0^x/-w-+ y+ �+ @w+ �y+ �+ + + 'w+ -#�)by)b�)biw)b�)b'y'�'yw"a'�'&y&�&w$j! y !�!w!z�y _!�!!q!&!.2w!3� Gy G� Gtw G� Gy�^w�y�iw�PyP�PSw- y)-�-w-�y -�-!-&-.Rw-3�y�tw�y�^w�6y6�6iw6�6y�Sw� y�w!U� > y >� >w �������M��������TVm$ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3MaskRunGroup:TYPE=MACHINEDEPENDENTRECORD[sMin:CARDINALFollowedbytheRunGroup];MaskSamples:TYPE=MACHINEDEPENDENTRECORD[sMin:CARDINAL,fMin:CARDINALFollowedbytheSampleArray];MaskRunGroupRef:TYPE=MACHINEDEPENDENTRECORD[addrLowBits:CARDINAL,HighbitsareinthecommandwordsMin:CARDINAL,fMin:CARDINAL];MaskSamplesRef:TYPE=MACHINEDEPENDENTRECORD[addrLowBits:CARDINAL,HighbitsareinthecommandwordsMin:CARDINAL,fMin:CARDINAL];ColorSamples:TYPE=MACHINEDEPENDENTRECORD[sMin:CARDINAL,fMin:CARDINALFollowedbytheSampleArray];Priority:TYPE=MACHINEDEPENDENTRECORD[restfieldofControlComcontainshighorderbitsofpriority.priorityLowBits:CARDINAL];SetColorTile:TYPE=MACHINEDEPENDENTRECORD[restfieldofControlComcontainstransparentFlagoropaqueFlag.addr:LONGCARDINAL];Toner:TYPE=MACHINEDEPENDENT{black(0),cyan(1),magenta(2),yellow(3)};StartImage:TYPE=MACHINEDEPENDENTRECORD[filler(0:0..8):[0..512)_0,leftOverMode(0:9..9):BOOLEAN,feed(0:10..10):BOOLEAN,strip(0:11..11):BOOLEAN,toner(0:12..15):Toner,passBands(1):NAT,nBands(2):NAT,fMinPage(3):CARDINAL,fSizePage(4):CARDINAL];StoreLoad:TYPE=MACHINEDEPENDENTRECORD[��qg/E�w_, y_,�_,sw_,+�y!_,�_,""_,'6_,.w_,4V�]y]�]x[wZ5W yW�WwW�ylW�W ~W%W-?wW2�VyV�Vw=V�VTkyTk�TkxR wQNyN�NwN!S�y#8N�N$IN)^N1 wN6}�L yL�Lcw!L�LxKR t!f'wIyI�Iw=I�IHyH�HwF[Cy=C�CwC�y!C�C"C'C/gwC4�B9 yB9�B9cw!B9�B9x@ t!f'w>y>�>w=>�>=By=B�=Bw;9 y79�9w9�y9�9 9%9-`w92�7xy7x�7xw=7x�7x5y5�5x4) w20yl0�0%w0�y0�00!0)w0/�x._D "'V*g-0|2w,yP,�,w+( y{(�(4w(�y(�(($(,w(2�x&D "'V12 w%Ey%E�%Es%Ew#!#y!#�!#=w!#�y!#�!#!#!�w!#( /4: {'  yh�"w�y�#+w1�,�!Yy �!Cw&*�y�w!�6y06�6w!6�6 y�w.�? y ?�?w?�? yk�6w!� yU� w I  y � w �yq �  # +Dw 0��������:��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4firstAddress(0):LONGCARDINAL,wordCount(2):CARDINALFollowedbythedatawords];END.���qg/E�w_,y_,�_,{_, w&_,�_,] y_]�]*x[wZ6yWw{W�W��������O��������TVm$�I��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpBasic.mesaCopyright(C)1983,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,198410:16:51amPDTPDInterpBasic:DEFINITIONS=BEGINStatus:TYPE={Nilstatus:nil,Normalstatus:betweenPages,constructingImage,transmissionComplete,Printererrors:paperJam,outOfPaper,serverAbort,PDFileErrors:invalidPassword,objectOutOfBounds,missingStartImage,badLoadReference,unrecognisedImagingCommand,loadOutOfBounds,unrecognisedControlCommand,unrecognisedCommandType,unexpectedEOF,runGroupTooLong,bitmapTooBig,deviceCommandTooBig,PDFileWarnings:wrongFormatVersion,unreasonableResolution,unreasonableBandSSize,unreasonableImageSize,unreasonableLoadSize,unreasonableNumberOfCopies,objectOutOfBand,emptyRunGroup,nonZeroFill,imageBoundsExceedPageBounds,tooFewBands,unknownColorTileFlag};PDErrorCode:TYPE=Status[invalidPassword..deviceCommandTooBig];PDWarningCode:TYPE=Status[wrongFormatVersion..unknownColorTileFlag];END.��x_:]/BZ '* -[$ -#s) +WuZD wZD�ZDyZD�ZD wZD �y"ZD�ZD#fwXyuX�X.wX��xVQwUNxSwQ PXNxM wKbI H xFlr4wDCAv?>'<:917 54; 2x0r4w/E-+*O('%Y# "  c m y%�w�|-w y!w�www�x1y)wi)�)���������������TVm$"������������������������������������������������PDInterpBitmap.mesaMichaelPlass,November9,198310:39amBasicoperationsontwo-dimensionalarraysofpixels.DIRECTORYBitBlt,Inline;PDInterpBitmap:DEFINITIONSIMPORTSInline=BEGINThisinterfaceprovidesmostofthefunctionalityofBitBlt.Toavoidconfusionnomatterhowthemapisphysicallylaidout,termslikeheightandwidthareavoided,andthecoordinatesareexpressedintermsofsandf,forslowandfast.Onadisplay,thesaxisisnormallyvertical,andpointsdown,butonaprinterthatscansinthelongdirection,thefaxiswillpointup.Thediagrambelowtakesthelatterpointofview.--^--f|--|--|+----------------------------+--|||--||rast*bitsPerWord/bitsPerPixel|--|||--||+------------+|--|||||--|||||--|||fSize||--|||||--||sMin|sSize||--||<---->+------------+|--||^|--|||fMin|--|sOrigin|vlines|--|<-------->+----------------------------+--|^originofbuffer--||--||fOrigin--||--||--|v--+-------------------------------------------->--DevicespaceoriginsABitmapDescdescribesawindowintoabuffer,andthebufferitselfmaybepositionedanywhereinaglobaldevicespace.ThewindowinginformationisstoredintheBitmapDescrecord,sothatitmaybeeasilychangedtoaccomplishtranslationandclippingbyrectangles.Thetranslationfeaturemaybeusedfordestinationmapstoconvenientlyimplementbandbuffers.BitmapDesc:TYPE=RECORD[Theseparametersdefineawindowwithinthebuffer,aswellaswherethebufferispositionedindevicespace.sOrigin,fOrigin:INTEGER_0,���x_:]$g#:&[ $)*yXwXKUMyUM�UM UM!wUM'+�y-UM�UM.:xQ"#% -/n4[6x: @PW50 %(}+6.158Q;N #%V+`-02W�3`67O9v<z?M�Q/{� f!'|,/73379w;k�<Ka. ' %z'_Ka�xKa(S+6-1B46<IQ4 OwFj{FjFj�wD{DwD�{D�wC{CC�wAt{AtAt�Atw?{??�?�?.U�w>%{>%>%�>%�|>%�>%6� 'G�(> {>%0f�w<}{<}<}�<}�<}.U�w:{::�:�:# :2w�w9.{9.9.�9.�9.#�9.-�9.2w�w7{77�7�7#�7-�72w�w5{55�5�5#�|$5�5%8{5-�52w�w48{4848�48�48#�48-�482w�w2{22�2�|2J {2#�|2J({2/-�24�w0{00�0"04�w/A{/A/A�/A�/A#�/A0f�w-{--�-�-#�|$-�-%8{-0f�w++{+�|+{+�+&�|+,{+2w�w*K{*K*K#w({((�(�|)#$rw&{&&�&�w%={%=%=�%=�|%=�%=-w#{##�#�w!{!!�!�w G{ G G� G�w{.w{|w,�x�u � %(z�)-026:=   � $)-|0@6 >9Ze !@%'t*F+.0]49c;  + D" )J, 27Z:J<?*   %z,/Yw y�w�yj�>w!�x � %),"0i2"46:< m2 25w )yu � w !9�"�������=��������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2sMin,fMin:INTEGER_0,sSize,fSize:NAT_0,pointer:LONGPOINTER_NIL,rast,lines:CARDINAL_0Storedcontiguously,witheachlinepaddedtoawordboundary,rastwordsperline.Thelongpointerpointstotheactualbits.];Rectangle:TYPE=RECORD[sMin,fMin:INTEGER,sSize,fSize:NAT];RasterWords:PROC[bitmapDesc:BitmapDesc]RETURNS[INT]=INLINE{RETURN[Inline.LongMult[bitmapDesc.rast,bitmapDesc.lines]];};Reshape:PROC[pointer:LONGPOINTER,words:INT,bounds:Rectangle]RETURNS[BitmapDesc];MakesaPixelMapfromthestorageprovided.InsufficientSpace:ERROR;Intersect:PROC[a,b:Rectangle]RETURNS[Rectangle];Computestheintersectionofdevicerectangles.Clear:PROC[bitmapDesc:BitmapDesc];Afastwaytoclearabuffer.ShiftMap:PROC[p:BitmapDesc,s,f:INTEGER]RETURNS[BitmapDesc];TranslatesthebitmapDescindevicespace.ShiftWindow:PROC[p:BitmapDesc,s,f:INTEGER]RETURNS[BitmapDesc];Translatesthewindowindevicespace.Clip:PROC[p:BitmapDesc,bounds:Rectangle]RETURNS[BitmapDesc];FurtherrestrictsthewindowSetWindow:PROC[p:BitmapDesc,bounds:Rectangle]RETURNS[BitmapDesc];ChangesthewindowWindow:PROC[p:BitmapDesc]RETURNS[Rectangle];BufferBounds:PROC[p:BitmapDesc]RETURNS[Rectangle];ReturnsarectangledescribingtheactualboundsofthebufferBoundedWindow:PROC[p:BitmapDesc]RETURNS[Rectangle];p.Window.Intersect[p.BufferBounds]Fill:PROC[dest:BitmapDesc,area:Rectangle,value:CARDINAL,function:Function_[null,null]];Function:TYPE=RECORD[dstFunc:BitBlt.DstFunc,srcFunc:BitBlt.SrcFunc];[null,null]makeszerobitswhite,onebitsblack[or,null]makeszerobitstransparent,onebitsblack[and,null]makeszerobitswhite,onebitsblack���qg/E�w_,y_,�_,4w_,� ]y]�]w]�%[y5[�[[&w[�y!T[�["<w#_[�[Z5yZ5�Z5lwZ5\��xXD e a#&,*,b�-07*9=VF #%G'+wU?Q yQ�QvwQ.�yQ�QwQ $y(Q�Q)*w.�Q�Q.2y6Q�Q7pw8Q�Q9`�uN wN�NyN�NHwNG # y+N�N,wN1�y2DN�N2w4PN�N57�y7N�N7wN;�yLwL`!+gKRuHwH�HyH�H{wH{y H�HH"w'-H�H( y,H�H,w.H�H/x4 y;H�H<iwF\ xDb� "j'wC y)C �C w ;C �C u?w?�?y?�?w?f y#+?�?#w?)7 x>8 "Y&\ u:w:�:y:�:w: + x9�u s�u5w5�5y5�5+w5+S #b$y&:5�5&w+z5�5y,a5�5-5w52m x4) y !"&u0 w0�0y0�0<w0;c %s&y(K0�0(w-0�0y.r0�0/Fw04~ x/2 y A$Du+wL+�+yI+�+w+ (% y,E+�+-w+2Q x*<<u&w&�&y&�&Uw&T| $) y0&�&1}w&6 x%Epu!w!�!y!�!Yw!Y y"!�!#ow!( u w�y�w y%�&w+ x��9 #]%).N/2>u w�y�w y'�(w- x "uw�y�wM !]$ +y/�0ww5�6�*yC�w�y�nw &70�5x!_%N'*h ur R '*S, ]!=%+'*F���������������TVm$������������������������������������������������������������������������������������3[and,complement]makeszerobitstransparent,onebitswhite[xor,null]makeszerobitstransparent,onebitsinvertedetcetera.Transfer:PROC[dest,source:BitmapDesc,function:Function_[null,null]];DoesaBITBLTfromthesourcetothedest,throughtheintersectionofthetwowindows.Doestherightthingifthesourceanddestoverlapinthesamebuffer.Tile:TYPE=RECORD[sOrigin,fOrigin:INTEGER,sSize,fSize:NAT,phase:INTEGER,pointer:LONGPOINTER,rast,lines:CARDINAL];AtileissimilartoaBitmapDesc,butthewindowspecificationsaremoreprimitive,andthereisanadditionalphasespecification.Atileisreplicatedtofilltheplane,withtileshiftedbyphasepixelsinthefdirectioneverysource.sSizelines.CreateTile:PROC[rectangle:Rectangle,phase:INTEGER_0,rasterPointer:LONGPOINTER,scratchPointer:LONGPOINTER_NIL,scratchWords:INT_0]RETURNS[tile:Tile];ThescratchPointerandscratchWordsparametersdescribethespacefortheresults.Therasteristurnedintoatile.Thismayinvolvereplicatingthepatterntomakealargertilethatwillspeedthecoloringoperation,sothesizeoftheresultwillnotingeneralbethesameasthesource.However,therastermaynotalwaysbecopied.TransferTile:PROC[dest:BitmapDesc,tile:Tile,function:Function_[null,null]];Transfersfromthetiledplanetodest.END.��qg/E�x_,] ? o#^% -]/2w]9m! (+-[uXwX�XyX�XwX0 ) .4�6q:xV[�}V�VRxVI$%'+02l 9;A=U@d $|%(,N.16h8:Z=wQy3Q�QwQ�yQ�Q]wQ�PJ)yuPJ�PJw PJ�PJNyN�NwN�NLyNL�LwL�LKTy5KT�KTKT&wCKT�KTIyI�IlwHxF^�u6X� %t'*!. 7-9D `7!* 'y+9 3�5I79 ?+C/($z#%)g-I.1;�2.7Ah Hu> w->�>y+>�>w> 'Ey+>�>, w>1d�24~ y=>�>=<rw<r�<ry<r�<r<r#w<r(�y*3<r�<r+w,><r�<r- y6<r�<r6w<r8�::y;<r�<r<w:x9# C ' .359;7|o#%�'*G-W0G4 ;x5i� #0&(,6.3 : ;>4-imf $&(,R. 0W5c;V=2sBu/7 wL/7�/7yJ/7�/7w/7 &),28�:1=x-&rx#$y*Awi*A�*A���������������TVm$������������������������������PDInterpBitmapImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,198411:28:57amPDTDIRECTORYBitBlt,Environment,Inline,PDInterpBitmap,PDBitBltTiming,System;PDInterpBitmapImpl:PROGRAMIMPORTSBitBlt,Inline,SystemEXPORTSPDInterpBitmap,PDBitBltTiming=BEGINBitmapDesc:TYPE=PDInterpBitmap.BitmapDesc;Tile:TYPE=PDInterpBitmap.Tile;Rectangle:TYPE=PDInterpBitmap.Rectangle;Function:TYPE=PDInterpBitmap.Function;bitsPerWord:NAT=Environment.bitsPerWord;lgBitsPerWord:NAT=Environment.logBitsPerWord;wordsPerPage:NAT=Environment.wordsPerPage;lgBitsPerPixel:NAT=0;pixelsPerWord:NAT=bitsPerWord;Someinlinesforbasicbit-hackingoperations.BITAND:PROC[a,b:CARDINAL]RETURNS[CARDINAL]=INLINE{RETURN[Inline.BITAND[a,b]]};Shift:PROC[a:CARDINAL,b:INTEGER]RETURNS[CARDINAL]=INLINE{RETURN[Inline.BITSHIFT[a,b]]};timingBitBlts:BOOLEAN_FALSE;bitBltPulses:System.Pulses_[pulses:0];ResetBitBltMicroseconds:PUBLICPROC={bitBltPulses_[pulses:0];timingBitBlts_TRUE};GetBitBltMicroseconds:PUBLICPROCRETURNS[LONGCARDINAL]={RETURN[System.PulsesToMicroseconds[bitBltPulses]]};BITBLT:PROC[ptr:BitBlt.BBptr]=INLINE{IFtimingBitBltsTHEN{bitBltPulses.pulses_bitBltPulses.pulses-System.GetClockPulses[];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];BitBlt.BITBLT[ptr];bitBltPulses.pulses_bitBltPulses.pulses+System.GetClockPulses[];}���x_,]/BZ '* -[$% #)+yXwXK #C'2dVSyS�SJQwQLyPHwPH!| N�yN�NwL yL�LwL�jKRy3KR�KRwKR�I yI�IvwI.�HyCH�HwH�F[ y_F[�F[HwF[Y�>D yD�D|wD�rC  y0C �C wC *�AeyAe�AewAe�? y?�?w?� x>} # y<nwq<n�<nyo<n�<nw<ny<n�<nw#<n�<ny$<n�<n%w*e<n�y<n*w0<n�<n:�y:�:Sw:�y5:�: w:�:y#U:�:$w':�:(6)u9w9�9y9�9{w9zy9�9Lw 9�9!y#Y9�9#w(9�9y)9�9*Tw9/�y/9�90w6&9�97x�y7x�7xSw7x�y57x�7x w7x�7xy#U7x�7x$w(7x�7x(*x2 y2�2fw2�y^2�2 w"2�2/2  �!'&'u+w +�+y +�++#w+'i�)N 1~�3 8 *< �y*<�*<Lw*<�*<o�u&w&�&y&�&&"&&Jw&,U�y,&�&-r&0w6&�&7�%E�ye%E�%E9wM%E�%E,y!w!�!y!�!w! "�y$!�!%3w!)d�y Ow O y O� Ow O�{� +�,|�y���w���9XyX�XwX�X9y�w�9 y � w � 9aya�awa�a9y�w�9y�w�9kyk�kwk�k9y�w�9y�w�9 t{� +�-d ����������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2ELSEBitBlt.BITBLT[ptr];};Intersect:PUBLICPROC[a,b:Rectangle]RETURNS[Rectangle]={sMin:INTEGER_MAX[a.sMin,b.sMin];fMin:INTEGER_MAX[a.fMin,b.fMin];sMax:INTEGER_MIN[INT[a.sMin]+a.sSize,INT[b.sMin]+b.sSize];fMax:INTEGER_MIN[INT[a.fMin]+a.fSize,INT[b.fMin]+b.fSize];IFsMax<=sMinORfMax<=fMinTHENRETURN[[0,0,0,0]]ELSERETURN[[sMin,fMin,sMax-sMin,fMax-fMin]]};LongZero:PROC[address:LONGPOINTERTOCARDINAL,count:CARDINAL]={IFcount>0THEN{address^_0;Inline.LongCOPY[from:address,nwords:count-1,to:address+1];};};Clear:PUBLICPROC[bitmapDesc:BitmapDesc]={pointer:LONGPOINTER_bitmapDesc.pointer;words:LONGCARDINAL_Inline.LongMult[bitmapDesc.rast,bitmapDesc.lines];WHILEwords>32768DOLongZero[pointer,32768];pointer_pointer+32768;words_words-32768;ENDLOOP;LongZero[pointer,words];};InsufficientSpace:PUBLICERROR=CODE;Reshape:PUBLICPROC[pointer:LONGPOINTER,words:INT,bounds:Rectangle]RETURNS[bitmapDesc:BitmapDesc]={bitsPerPixel:CARDINAL=Shift[1,lgBitsPerPixel];bitsPerLine:NAT=Inline.LongMult[bounds.fSize,bitsPerPixel];Willraiseaboundsfaultiftoomanybitsperline.wordsPerLine:CARDINAL=(bitsPerLine+(bitsPerWord-1))/bitsPerWord;wordsNeeded:INT=Inline.LongMult[wordsPerLine,bounds.sSize];IFwordsNeeded>wordsTHENERRORInsufficientSpace;RETURN[[bounds.sMin,bounds.fMin,0,0,bounds.sSize,bounds.fSize,pointer,wordsPerLine,bounds.sSize]];};ShiftMap:PUBLICPROC[p:BitmapDesc,s,f:INTEGER]RETURNS[BitmapDesc]={p.sOrigin_p.sOrigin+s;p.fOrigin_p.fOrigin+f;RETURN[p]};ShiftWindow:PUBLICPROC[p:BitmapDesc,s,f:INTEGER]RETURNS[BitmapDesc]={���qg/E�y_,w_,By _,�_,w_,�_,w]uZ5wZ5�Z5yZ5�Z5Z5wZ5uZ! y'Z5�Z5(wZ5- 5�6�XyX�X_wX�yFX�XWwX�Xb$?VyV�VTwV�y;V�VLwV�VW$)U?y!U?�U?wU?�yrU?�U?wU?�yU?9w!DU?�U?!y,4U?�U?,w.?U?�U?.SyS�SwS�ygS�SxwS�yS.w!9S�S!y,S�S,}w.S�S.yQwQOylQ�QI�wQ"J$y(]Q�Q)Q,"wQ135o6yPHPHBwPHU"+ ) NuKRwKR�KRyKR�KRnwKRmy4KR�KRKR#%KR(KR*w1KR�KR1y6CKR�KR7w<zKR�KR=a�?F�yIwIq��yI�IwI�H�,F["!'c,2 41 DC u?w?�?y?�??w?p # +�-�>y5>�>>&w>�!T<nyy<n�<n2<njw<n %�!6Vy:w:Ta�y:�:r�w9o7w�Z#� 5��y4(w4(�4(2^0-y-�--w-#f�y%K-�-&w(-�-u+w+�+y+�+{+w+3y"+�+#+&w++�+,y1H+�+1w3T+�+409 y*;w*; 4 &O�(4�( y(�(w(�!&`& y&�&w&�0Q x%EN�"K#%),2.w# y+#�#w# �"6�7C ! y!�!w!�1 y Nw N H�}y N� N!C N$Ow N(yw`  (A)+[ 3 <J Xu w � y � + <w  (){y* � +\w02 � y1 � 1w 7% ?�b��|x� ]�qb� Gykwk`u t w t� ty t� t< tLw t" *++y- t� t-mw2C t� ty3* t� t3w t96 �����������������TVm$����������������������������������������������������������������������������3p.sMin_p.sMin+s;p.fMin_p.fMin+f;RETURN[p]};Clip:PUBLICPROC[p:BitmapDesc,bounds:Rectangle]RETURNS[BitmapDesc]={bounds_Intersect[Window[p],bounds];p.sMin_bounds.sMin-p.sOrigin;p.fMin_bounds.fMin-p.fOrigin;p.sSize_bounds.sSize;p.fSize_bounds.fSize;RETURN[p]};SetWindow:PUBLICPROC[p:BitmapDesc,bounds:Rectangle]RETURNS[BitmapDesc]={RETURN[p]};Window:PUBLICPROC[p:BitmapDesc]RETURNS[Rectangle]={RETURN[[p.sOrigin+p.sMin,p.fOrigin+p.fMin,p.sSize,p.fSize]]};BufferBounds:PUBLICPROC[p:BitmapDesc]RETURNS[Rectangle]={RETURN[[p.sOrigin,p.fOrigin,p.lines,Shift[p.rast,lgBitsPerWord-lgBitsPerPixel]]]};BoundedWindow:PUBLICPROC[p:BitmapDesc]RETURNS[Rectangle]={sMin:INTEGER_MAX[p.sOrigin+p.sMin,p.sOrigin];fMin:INTEGER_MAX[p.fOrigin+p.fMin,p.fOrigin];sMax:INTEGER_MIN[p.sOrigin+p.sMin+p.sSize,p.sOrigin+p.lines];fMax:INTEGER_MIN[p.fOrigin+p.fMin+p.fSize,p.fOrigin+Shift[p.rast,lgBitsPerWord-lgBitsPerPixel]];RETURN[[sMin,fMin,MAX[sMax-sMin,0],MAX[fMax-fMin,0]]]};replicator:ARRAY[0..4]OFCARDINAL=[0FFFFH,05555H,01111H,00101H,00001H];Fill:PUBLICPROC[dest:BitmapDesc,area:Rectangle,value:CARDINAL,function:Function]={lgPixelsPerWord:INTEGER=lgBitsPerWord-lgBitsPerPixel;Thefollowingboundingboxiscalculatedintermsofthedestinationbuffer.sMin:INTEGER=MAX[dest.sMin,0,area.sMin-dest.sOrigin];sMax:INTEGER=MIN[dest.sMin+dest.sSize,dest.lines,area.sMin+area.sSize-dest.sOrigin];fMin:INTEGER=MAX[dest.fMin,0,area.fMin-dest.fOrigin];fMax:INTEGER=MIN[dest.fMin+dest.fSize,Shift[dest.rast,lgBitsPerWord-lgBitsPerPixel],area.fMin+area.fSize-dest.fOrigin];replicatedPixel:CARDINAL_Inline.BITAND[value,Shift[1,Shift[1,lgBitsPerPixel]]-1]*replicator[lgBitsPerPixel];��qg/E�w_7�'�]��y[w[`Z@uVwLV�VyIV�VVwV $*9 y0V�V1wV7 ?�UJ�S�_$NQ�'PS�N� My� yK]wK]`IuFfwFf�FfyFf�FfUFfewFf !4 )D. y5aFf�Ff65wD 3��yCwC`Apu>!w>!�>!y>!�>!Y>!jw>!9 y'T>!�>!((w>!-_ 4�6l�y<yw<y` "�$)�+05:u7 w7�7y7�77w7 X" y*7�7+nw70 7�9�y5w5` z #(u 442u/= w/=�/=y/=�/=/=w/="<$d y,/=�/=-Sw/=2 9�;�-y-�-_w-�yF-�-Ww-�-b%^�'C,B +y+�+Tw+�y;+�+Lw+�+W%H�'-,! *Gy!*G�*Gw*G�yr*G�*Gw*G�*G9%5�'+�-28�:p(y(�(w(�yg(�(xw(�(.%�'+�-2c8T�:9 &y%Pw%P`y%P�%Pw!%P�%P! )y+q%P�%P,w.*%P�%P. 6# Z y Z� ZYw Z,y Z� Zb� Zw Z&[�(@.4\9u w � y �  w E &) 0Ay4d � 5/w: � ;wc���y�Cw!�#xm"# )+/203! 9wmym�mpwm�ym�mw!hm�m! (b)y2�w�y�w!?�!/? #vyv�vewv�yv�vw!]v�v! (M)y'�w�y�w!4�!/(&~# y � |w !l�"y& � 'w+L � +/4z � �������f��������TVm$����������������������������������������������������������������������������������������������������������������4bbTableSpace:BitBlt.BBTableSpace;bb:BitBlt.BBptr_BitBlt.AlignedBBTable[@bbTableSpace];IFsMin<sMaxANDfMin<fMaxTHEN{bb^_[dst:[word:dest.pointer+Inline.LongMult[sMin,dest.rast]+Shift[fMin,-lgPixelsPerWord],bit:Inline.BITAND[fMin,Shift[1,lgPixelsPerWord]-1]],dstBpl:dest.rast*bitsPerWord,src:[word:@replicatedPixel,bit:0],srcDesc:[gray[[yOffset:0,widthMinusOne:0,heightMinusOne:0]]],height:sMax-sMin,width:Shift[fMax-fMin,lgBitsPerPixel],flags:[direction:forward,disjoint:TRUE,disjointItems:TRUE,gray:TRUE,srcFunc:function.srcFunc,dstFunc:function.dstFunc]];BITBLT[bb];};};Transfer:PUBLICPROC[dest,source:BitmapDesc,function:Function]={lgPixelsPerWord:INTEGER=lgBitsPerWord-lgBitsPerPixel;sMin:INTEGER=MAX[dest.sOrigin+MAX[dest.sMin,0],source.sOrigin+MAX[source.sMin,0]];sMax:INTEGER=MIN[dest.sOrigin+MIN[dest.sMin+dest.sSize,dest.lines],source.sOrigin+MIN[source.sMin+source.sSize,source.lines]];fMin:INTEGER=MAX[dest.fOrigin+MAX[dest.fMin,0],source.fOrigin+MAX[source.fMin,0]];fMax:INTEGER=MIN[dest.fOrigin+MIN[dest.fMin+dest.fSize,Shift[dest.rast,lgBitsPerWord-lgBitsPerPixel]],source.fOrigin+MIN[source.fMin+source.fSize,Shift[source.rast,lgBitsPerWord-lgBitsPerPixel]]];bbTableSpace:BitBlt.BBTableSpace;bb:BitBlt.BBptr=BitBlt.AlignedBBTable[@bbTableSpace];fMinDest:NAT=fMin-dest.fOrigin;fMinSource:NAT=fMin-source.fOrigin;sStartDest:NAT_sMin-dest.sOrigin;sStartSource:NAT_sMin-source.sOrigin;IFsMin<sMaxANDfMin<fMaxTHEN{bb^_[dstBpl:dest.rast*bitsPerWord,srcDesc:[srcBpl[source.rast*bitsPerWord]],height:sMax-sMin,width:Shift[fMax-fMin,lgBitsPerPixel],flags:[direction:forward,disjoint:TRUE,disjointItems:TRUE,gray:FALSE,srcFunc:function.srcFunc,dstFunc:function.dstFunc]];IFsource.pointer=dest.pointerTHEN{sSize:NAT=sMax-sMin;fSize:NAT=fMax-fMin;IF(fMinSource+fSize)>fMinDestAND(fMinDest+fSize)>fMinSourceAND(sStartSource+sSize)>sStartDestAND(sStartDest+sSize)>sStartSourceTHEN{bb.flags.disjoint_FALSE;--therectanglesoverlap��qg/E�w_, O] V�%y[w[y[�[w[)y$|[�[%5w[(A�Z5�T�X2 #�%3 9s�V (+2y/V�V/w3V�V37U?SQ')PI#%( /1Z<XN Lq$!KR m$y*TKR�KR+ w-KR�KR.\ y7KR�KR7w:1KR�KR;yIwI�I*~0FHyF\w F\�F\oDC u?w?�?y?�??w?J % -3:��;�>y>�>Cw>!�#<oy<o�<o_w<o�y<o�<owW<o�<o y(+<o�<o)=w*<o�<o+G 1:y:�:w\:�: &9 y!9 �9 w9 �y9 �9 w.9 �9  y(9 �9 )w*f9 �9 *8f 7yy7y�7yw7y�7yj.5y5�5Tw5�y5�5wL5�5 y(5�5)'w*5�5+1 14*y4*�4*wQ4*�4* &2y2�2w2�y2�2w#2�2 y'2�2(w*P2�2*8;0$y.0�0/w10�01i/3- O+ V�;%*=y*=�*=w*=�� ( y(�(w(�!S�"Q& y&�&w&�%F yQ%F�%F:w%FK�y#w#y#�#w#)y$|#�#%5w#(A�!�T� P" Yq$! m$y*T�+ w-�.\ y7�7w:1�;y w � c *0cyw �| y&�'w*�y�w� lyl�lwl� ywy)�*w-ywy,�-w vy) v� v*w v-� '!�y" � #Jw&/ � x', � '�(* 1@���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5IFsStartDest=sStartSourceTHENbb.flags.disjointItems_FALSE;--sodotheitemsIFsStartDest>sStartSourceOR(sStartDest=sStartSourceANDfMinDest>fMinSource)THEN{--reversedirectionbb.flags.direction_backward;bb.srcDesc.srcBpl_bb.dstBpl_-bb.dstBpl;sStartSource_sStartSource+(sSize-1);sStartDest_sStartDest+(sSize-1);};};};bb.dst_[word:dest.pointer+Inline.LongMult[sStartDest,dest.rast]+Shift[fMinDest,-lgPixelsPerWord],bit:Inline.BITAND[fMinDest,Shift[1,lgPixelsPerWord]-1]];bb.src_[word:source.pointer+Inline.LongMult[sStartSource,source.rast]+Shift[fMinSource,-lgPixelsPerWord],bit:Inline.BITAND[fMinSource,Shift[1,lgPixelsPerWord]-1]];BITBLT[bb];};};IsPowerOfTwo:PROC[c:CARDINAL]RETURNS[BOOLEAN]=INLINE{RETURN[BITAND[c,c-1]=0]};largeBitSize:INT_5000;fSizeHint:NAT_100;CreateTile:PUBLICPROC[rectangle:Rectangle,phase:INTEGER_0,rasterPointer:LONGPOINTER,scratchPointer:LONGPOINTER_NIL,scratchWords:INT_0]RETURNS[tile:Tile]={ENABLEInsufficientSpace=>GOTOInsufficientScratch;bitWidth:CARDINAL=Shift[rectangle.fSize,lgBitsPerPixel];bitmapDesc:BitmapDesc=[rectangle.sMin,rectangle.fMin,0,0,rectangle.sSize,rectangle.fSize,rasterPointer,(rectangle.fSize+(pixelsPerWord-1))/pixelsPerWord,rectangle.sSize];IFbitWidth<=16ANDIsPowerOfTwo[bitWidth]ANDbitmapDesc.sSize<16ANDphase=0THEN{small:BitmapDesc_Reshape[scratchPointer,scratchWords,[rectangle.sMin,rectangle.fMin,rectangle.sSize,Shift[16,-lgBitsPerPixel]]];FORfShift:NAT_0,fShift+bitmapDesc.fSizeUNTILfShift>=small.fSizeDOTransfer[small,ShiftMap[bitmapDesc,0,fShift],[null,null]];ENDLOOP;tile_[small.sOrigin,small.fOrigin,small.sSize,small.fSize,0,small.pointer,small.rast,small.lines];}ELSE{fSize:NAT_(fSizeHint+bitmapDesc.fSize-1)/bitmapDesc.fSize*bitmapDesc.fSize;bitsPerLine:NAT_Shift[fSize,lgBitsPerPixel];sSize:NAT_MAX[(((largeBitSize+bitsPerLine-1)/bitsPerLine)/bitmapDesc.sSize)*bitmapDesc.sSize,��qg/E�y_,'w_,y(_,�_,(w_,+9�y:_,�_,;Mw>2_,�_,x?/_,�_,?�]y['w[y'm[�[(J�w[)y9k[�[:>wZ6y&_Z6�Z6'wZ6*$�x+YZ6�Z6+�,1MwX8#�%,.7+�8>�V U?8 !�" *�,s 2{ 9 �: S � Q8PI'NL(� $�&7 =a�KS)B+y/KS�KS0fw4+KS�KS4;IH� %�':Q F]� ,}/y2F]�F]3w7fF]�F]7 DyCw C�CoAf?u<p w<p�<py<p�<psw<psyn<p�<p9w$<p�<py%<p�<p&aw<p+�y+<p�<p,w1<p�<p2�y4h<p�<p4w<p9�y:w:`�y:�:|wA:�:�!9!5 y5�5Ow5u�4* y{4*�4*dw4*t�u2 w-2�2y+2�22w2 %D +y0X2�20w26�796 y00w0�0y#0�0#0&w0,�y.#0�0/ w0/0�01 y:0�0:xw0<�>+y/4w/46��y-w- y#j-�-$X�-%w-'+yJ+�+w+�,*=  �",67(@$ &21y%Gw%Gxy%G�%Gw%G y/%G�%G0zw%G2=�>y#w#��y#�#w#�! � `/ 7 Q]&,QywyB�+w<� Uy/�0w4 yw[n,\-2{6yw� c� ( / 78 d B �ywB�nyn�nwn�A y�w�W &S wy w� ww w�y w � O�������0��������TVm$`��������������6bitmapDesc.sSize];large:BitmapDesc_Reshape[scratchPointer,scratchWords,[bitmapDesc.sOrigin+bitmapDesc.sMin,bitmapDesc.fOrigin+bitmapDesc.fMin,sSize,fSize]];finalPhase:CARDINAL;WHILEphase<0DOphase_phase+bitmapDesc.fSizeENDLOOP;phase_phaseMODbitmapDesc.fSize;finalPhase_(phase*(sSize/bitmapDesc.sSize))MODbitmapDesc.fSize;large.sSize_bitmapDesc.sSize;large.fSize_bitmapDesc.fSize;Transfer[large,bitmapDesc,[null,null]];WHILElarge.fSize<fSizeDOfSizePrev:NAT=large.fSize;large.fSize_MIN[fSize,2*fSizePrev];Transfer[large,ShiftMap[large,0,fSizePrev],[null,null]];ENDLOOP;WHILElarge.sSize<sSizeDOsSizePrev:NAT=large.sSize;large.sSize_MIN[sSize,2*sSizePrev];Transfer[large,ShiftMap[large,sSizePrev,phase],[null,null]];{firstPart:BitmapDesc_ShiftMap[large,sSizePrev,phase-bitmapDesc.fSize];firstPart.fSize_bitmapDesc.fSize;Transfer[large,firstPart,[null,null]];};phase_2*phase;WHILEphase>bitmapDesc.fSizeDOphase_phase-bitmapDesc.fSizeENDLOOP;ENDLOOP;tile_[large.sOrigin,large.fOrigin,sSize,fSize,finalPhase,large.pointer,large.rast,large.lines];};EXITSInsufficientScratch=>{tile_[rectangle.sMin,rectangle.fMin,rectangle.sSize,rectangle.fSize,phase,rasterPointer,(rectangle.fSize+(pixelsPerWord-1))/pixelsPerWord,rectangle.sSize];};};TransferTile:PUBLICPROC[dest:BitmapDesc,tile:Tile,function:Function_[null,null]]={bitWidth:CARDINAL=Shift[tile.fSize,lgBitsPerPixel];IFbitWidth=bitsPerWordANDtile.rast=1ANDtile.sSize<=16ANDtile.phase=0THEN{startLine:NAT_MAX[dest.sMin,0];endLine:INTEGER_MIN[dest.sMin+dest.sSize,dest.lines];startPixel:NAT_MAX[dest.fMin,0];endPixel:INTEGER_MIN[dest.fMin+dest.fSize,Shift[dest.rast,lgBitsPerWord-lgBitsPerPixel]];IFendLine>startLineANDendPixel>startPixelTHEN{startBit:NAT_Shift[startPixel,lgBitsPerPixel];bbTableSpace:BitBlt.BBTableSpace;��qg/E�w_,] � ). [$Z6#,0/X yX�Xw LX�XyVwVeyV�V�wV"�$\(>�*#y4V�V5w:V�VU?�syTU?�U?fwU?S �)� y0S�S1wS3Q �>PI �3N& $'yLwLey!L�L"�wKR yKR�KRwKR� I �yDI�IUwI�I # H7') 0P3yF\wF\�F\yDwDey!D�D"�wC  yC �C wC � Ae �yOAe�Ae`wAe�Ae # ?7' .k36>  #9�$. <o:'�!09 ' H %)v7x'5�y4)w4)vX�y)^4)�4)*D�w4)+/�14�5y2w2�2y0w0�0/3c� ((+/ 6 -  +y*<w*< l#�(c� *i3=S& I2%F#!u wL�yJ�w#i +y.Q17t=\�H��YyJY�YwY�)ywx�] y"a�#5w%*Z�,?�y-t�.Hw0 6>8y:�;w  ��y � w �c yDc�c-wc>�yc�cw c�c '~y�Uw�y =�!Nw"�#0  y{�dwu�y�w �! 'ly#l�lwl�y tl�l!w"l�l#;0ywy � w#2y/�/w2� vyX v� vAw vQ�(p  q���������������TVm$!��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������7bb:BitBlt.BBptr=BitBlt.AlignedBBTable[@bbTableSpace];sOffset:INTEGER_(dest.sOrigin+dest.sMin-tile.sOrigin)MODtile.sSize;fOffset:INTEGER_(dest.fOrigin+dest.fMin-tile.fOrigin)MODtile.fSize;WHILEsOffset<0DOsOffset_sOffset+tile.sSizeENDLOOP;WHILEfOffset<0DOfOffset_fOffset+tile.fSizeENDLOOP;bb^_[dst:[word:dest.pointer+Inline.LongMult[startLine,dest.rast]+startBit/bitsPerWord,bit:startBitMODbitsPerWord],dstBpl:dest.rast*bitsPerWord,src:[word:tile.pointer+sOffset,bit:Shift[fOffset,lgBitsPerPixel]],srcDesc:[gray[[yOffset:sOffset,widthMinusOne:0,heightMinusOne:tile.sSize-1]]],height:endLine-startLine,width:Shift[endPixel-startPixel,lgBitsPerPixel],flags:[direction:forward,disjoint:TRUE,disjointItems:TRUE,gray:TRUE,srcFunc:function.srcFunc,dstFunc:function.dstFunc]];BITBLT[bb];};}ELSE{sMin:INT_dest.sOrigin+dest.sMin;fMin:INT_dest.fOrigin+dest.fMin;source:BitmapDesc;sOrigin:INT_tile.sOrigin;fOrigin:INT_tile.fOrigin;WHILEsOrigin<sMinDOsOrigin_sOrigin+tile.sSize;fOrigin_fOrigin+tile.phase;ENDLOOP;WHILEsOrigin>sMinDOsOrigin_sOrigin-tile.sSize;fOrigin_fOrigin-tile.phase;ENDLOOP;WHILEfOrigin<fMinDOfOrigin_fOrigin+tile.fSizeENDLOOP;WHILEfOrigin>fMinDOfOrigin_fOrigin-tile.fSizeENDLOOP;source_[sOrigin,fOrigin,0,0,tile.sSize,tile.fSize,tile.pointer,tile.rast,tile.lines];WHILEsource.sOrigin<sMin+dest.sSizeDOsource.fOrigin_fOrigin;WHILEsource.fOrigin<fMin+dest.fSizeDOTransfer[dest,source,function];source.fOrigin_source.fOrigin+source.fSize;ENDLOOP;source.sOrigin_source.sOrigin+source.sSize;fOrigin_fOrigin+tile.phase;WHILEfOrigin>fMinDOfOrigin_fOrigin-source.fSizeENDLOOP;ENDLOOP;};};END.��qg/E�w_, x�!]%]y6]�]w]�!%y8/]�]9@w]; [y+[�[w[�!|%y8[�[9w[;[ yZ5wZ5v�R�y Z5�Z5!m�wZ5"'u�)-�/ y52Z5�Z55w:Z5�Z5yXwXv�G�y |X�X!b�wX"'_�(-�/m y5X�X5w:X�XV�e�U>'C %�'8 =�S%K'y,S�S-wS0 Q'PH'-+- 5N'%* 5Q6LKQ'I'*H' !~'y,eH�H-w/H�H0m y9H�H9w<BH�H=yF[w%F[�F[!,2WD'yC wC �C Ad?�y>w>B�<my<m�<mpw<m�#:y:�:ew:�9 7wy[7w�7ww7w�x 5yP5�5w5�m y4'w4'eC�xy!�4'�4'!�w2� ^�"C 0�u H�"- y/1w/1�/1y-w-eC�xy!�-�-!�w+� ^�![ *:�u H�!E y(w(�(y&w&e8�my &�&!�w�(�).c�0H y5&�&6w;&�&y%Cw%Ce8�my %C�%C!�w%C#0(�).c�/` y4%C�%C5w:%C�%C#T�z#%1& , 2 9 ! y Mw Me f�!y,( M� M-�w  �ywv "l�#y.�.�wV' $m ' �! *�, y'w�_ � (�* �u H�"- ywvI�~y"�#�w%A*�+0t�1q y8�9w>�yhwh�hy wi � �������8��������TVm$.��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpMainImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September20,19849:14:01amPDTDIRECTORYPDInterpReader,PDInterpPage,PDRemoteStream,PDQueue,Process,Stream,String,PDInterpOutput;PDInterpMainImpl:PROGRAMIMPORTSPDInterpReader,PDInterpPage,PDRemoteStream,PDQueue,Process,String,PDInterpOutput=BEGINDoFile:PROC[request:PDQueue.Request,requestNumber:CARDINAL,abort:LONGPOINTERTOBOOLEAN]={Action:PROC[stream:Stream.Handle]={reader:PDInterpReader.Handle_PDInterpReader.Open[stream];separator:LONGSTRING_[160];String.Copy[separator,request.requestTime];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;String.AppendString[separator,request.fileName];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;String.AppendString[separator,request.requestor];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;reader.herald.copies_request.copies;WHILEPDInterpPage.InterpretPage[reader,request,abort].okDOIFabort^THENABORTEDENDLOOP;[]_PDInterpReader.Close[reader];};IFrequest.fileName=NILTHENPDInterpOutput.ReprintLastPage[request.copies]ELSE{PDRemoteStream.Read[request.fileName,request.requestor,request.requestorPassword,Action!PDRemoteStream.Error=>{message:LONGSTRING_[160];String.AppendString[message,request.fileName];String.AppendString[message,""];String.AppendString[message,expl];PDQueue.LogMessage[message,requestNumber];CONTINUE;};PDInterpReader.Error=>{message:LONGSTRING_[160];String.AppendString[message,"PDfileerror:"];String.AppendString[message,SELECTcodeFROMinvalidPassword=>"NotaPDfile",objectOutOfBounds=>"Objectoutofbounds",missingStartImage=>"Missingstartimage",badLoadReference=>"Badloadreference",unrecognisedImagingCommand=>"Unrecognisedimagingcommand",loadOutOfBounds=>"Loadoutofbounds",unrecognisedControlCommand=>"Unrecognisedcontrolcommand",unrecognisedCommandType=>"Unrecognisedcommandtype",��x_,]/BZ '* -[$ $$) +WyXwXK! *K5<V1U?yxU?�U? U?!wU?'2g SX"'I+ 6�y8S�S8uPIwPI�PIyPI�PIwPIO)5 y3PI�PI4Rw9PI�PI:yNNNFN`w!�N�N!�#�uLwL�LyL�LwL�LbL (�)�KR&�(fI ypI�I)IawI"R�#H yF\wF\yF\�F\�wF\I1�2w�y3^F\�F\4w8F\�F\D%yC wC yC �C �wC I1�2w�y3^C �C 4w8C �C Ae%y?w?y?�?�w?I1�2w�y3^?�?4w8?�?>b� y<ow<oe"-42ay81<o�<o9�<o:ww<o<y:::w#W:�:9 O�7xy5w5C�y(5�5 5!w4).y2w2B�0%,/3$o(�-#&}�+'y+�++ w+%�'f*=')(')�*&')%F'*y#'wa#�#!' O#%�'y� w%�'f�'),/2Y'y)Y�Y*"wY.Uy1Y�Y2Uw8#M%)d�*- 8%(8-Y/1b8$'9- 08$'+.* 8,/G 8l 8$'.+r-/8,e. 8_ v  8*-n 6=4�������6��������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2unexpectedEOF=>"UnexpectedEOF",runGroupTooLong=>"Rungrouptoolong",bitmapTooBig=>"Bitmaptoobig",deviceCommandTooBig=>"Devicecommandtoobig",ENDCASE=>"??"];String.AppendString[message,"wordIndex:"];String.AppendDecimal[message,wordIndex];String.AppendString[message,"wordCount:"];String.AppendDecimal[message,wordCount];PDQueue.LogMessage[message,requestNumber];CONTINUE;};PDInterpReader.Warning=>{message:LONGSTRING_[160];String.AppendString[message,"PDfilewarning:"];String.AppendString[message,SELECTcodeFROMwrongFormatVersion=>"WrongversionofPDfileformat",unreasonableResolution=>"Unreasonableresolution",unreasonableBandSSize=>"UnreasonablebandSSize",unreasonableImageSize=>"UnreasonableimageSize",unreasonableLoadSize=>"UnreasonableloadSize",unreasonableNumberOfCopies=>"Unreasonablenumberofcopies",objectOutOfBand=>"Objectoutofband",emptyRunGroup=>"Emptyrungroup",nonZeroFill=>"Non-zerofill",imageBoundsExceedPageBounds=>"Imageboundsexceedpagebounds",tooFewBands=>"Toofewbands",unknownColorTileFlag=>"Unknowncolortileflag",ENDCASE=>"??"];String.AppendString[message,"wordIndex:"];String.AppendDecimal[message,wordIndex];String.AppendString[message,"wordCount:"];String.AppendDecimal[message,wordCount];PDQueue.LogMessage[message,requestNumber];RESUME;};];};};Main:PROC={DOPDQueue.DoRequest[DoFile!ABORTED=>CONTINUE;]ENDLOOP};��qg/E�w_,8 #d% .L]8%='+/2 [8 "D$*^,Z58(*/6X8yX8wX:!V8U>')�* 2!S'* Q')�* 2nPH'* N'*yL'waL�LKQ'I$'�H'yH�HH wH%�'fFZ'),/4D'y)D�D*"wD.Uy1D�D2UwC 8&f(.H347=9Ac8(�* 3 ?8'*u 3 >8'*= 3 <l8' ) 3 :8,2. 8,=X9 7v8$A&+.m0&58 #&+.W4'8 #w*I28-M/49>'0 /08 !$`'*-8'*01L47(y+8w+:!*98(')�* 2!&'* %C')�* 2n#'* !'*y L'w L� L'Uu^w^�^y^�^w^��yw$�ygwg/yg�gw#g�g�yw q�������2��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3PDQueue.LogMessage["Booted."];Process.Detach[FORKMain[]];END.��qg/E�w_,[y1[�[w[yXwiX�X��������>��������TVm$�-����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpOutput.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September19,19849:12:44amPDTDIRECTORYPDFileFormat,PDInterpBitmap,PDQueue;PDInterpOutput:DEFINITIONS=BEGINStartImage:PROC[herald:PDFileFormat.Herald,startImage:PDFileFormat.StartImage,request:PDQueue.Request]RETURNS[PDInterpBitmap.BitmapDesc];Calledatthestartofeachpass.Returnsaclearedbufferforthefirstbandonthepage.Onsomedevices(continuousformdevicessuchasaVersatec),theoutputroutinemaywanttoprintaseparatorbarcontainingtheseparatorstring.TheImplshouldcopythestringifitneedstosaveitpasttheStartImagecall.EndBand:PROCRETURNS[PDInterpBitmap.BitmapDesc];Calledattheendofeachband.Returnsaclearedbufferforthenextband.Thebufferreturnedbythecallforthelastbandshouldnotbeused.EndImage:PROC[request:PDQueue.Request];Actuallystartstheprinting.ReprintLastPage:PROC[copies:CARDINAL];Attemptstoreprintthemostrecentpageagain.Thereneedstobesomestuffhereforerrormessagesandrecovery.END.��x_:]/BZ '* -[$ $$) +WyXwXK *UNyUN�UN wUN!�y#UN�UN$uQ wQ�QyQ�Q)wQ)J-@ PX %WyNwNxM 7(F!Kb�9!$8'*[,N.II; "%*H-e/�0R 68=*H�%$&l -/[599<Fl 1}M !%'L*;+.l0 7uCwDC�CyAC�CCwCxAv7(Y ?�9!$8'M>'!)#%(3*.2Y46u:w:�:y:�:xw]:�:x91YGu5w5�5y5�5w5y"5�5#Zw(5�5))�x4;P"E&M)}0rP c#^%(.1Cy-wi-�-���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpOutputViewerImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September26,19845:22:14pmPDTImplementsaCedarPDoutputdevicethatshowsthebitmapinaviewer.DIRECTORYPDFileFormat,PDInterpBitmap,Menus,ImagerPixelMaps,PDInterpOutput,ViewerClasses,ViewerOps,CGContext,Graphics,GraphicsOps,Real,ImagerFrameBuffer,Process,PDTextBitmap,String,PDQueue;PDInterpOutputViewerImpl:PROGRAMIMPORTSMenus,ImagerPixelMaps,ViewerOps,Graphics,GraphicsOps,Real,ImagerFrameBuffer,Process,PDTextBitmap,PDInterpBitmap,StringEXPORTSPDInterpOutput=BEGINviewer:ViewerClasses.Viewer_NIL;pageMap:ImagerPixelMaps.PixelMap_ImagerPixelMaps.Create[0,[0,0,0,0]];currentStartImage:PDFileFormat.StartImage;currentHerald:PDFileFormat.Herald;bandNumber:NAT_0;StartImage:PUBLICPROC[herald:PDFileFormat.Herald,startImage:PDFileFormat.StartImage,request:PDQueue.Request]RETURNS[PDInterpBitmap.BitmapDesc]={bandMap:ImagerPixelMaps.PixelMap;pageMap_ImagerPixelMaps.Create[0,[startImage.passBands*herald.bandSSize,startImage.fMinPage,startImage.nBands*herald.bandSSize,startImage.fSizePage]];currentStartImage_startImage;currentHerald_herald;bandNumber_0;pageMap.Clear;bandMap_pageMap.Clip[[startImage.passBands*herald.bandSSize,startImage.fMinPage,herald.bandSSize,startImage.fSizePage]];RETURN[[sOrigin:bandMap.sOrigin,fOrigin:bandMap.fOrigin,sMin:bandMap.sMin,fMin:bandMap.fMin,sSize:bandMap.sSize,fSize:bandMap.fSize,pointer:bandMap.refRep.pointer,rast:bandMap.refRep.rast,lines:bandMap.refRep.lines]]};EndBand:PUBLICPROCRETURNS[PDInterpBitmap.BitmapDesc]={bandMap:ImagerPixelMaps.PixelMap;bandNumber_bandNumber+1;bandMap_���x_,]/BZ '* -[$ $$) +WZ5 )�^`"&!(,/!35E�6zyVwVK */U?r # + 29 SH%4 .3nPIy PI�PI!nNwN& .44t =L{# -{8ByKRwKR I�yI�IwF\#A�y$F\�F\%w&F\�F\C u(c�):z Ae? O> y>�>w>�uu: w:�:y:�:::Kw: &4 9 "'hy7xw7x+�-�54) �2',0#*/3E� - �t+ �*= (E�4&!,%y%Fw%Fq#m!b P   Y X 0cuwU�yR� w%8~�:c� u � %�'{ E��������G��������TVm$����2pageMap.Clip[[(currentStartImage.passBands+bandNumber)*currentHerald.bandSSize,currentStartImage.fMinPage,currentHerald.bandSSize,currentStartImage.fSizePage]];RETURN[[sOrigin:bandMap.sOrigin,fOrigin:bandMap.fOrigin,sMin:bandMap.sMin,fMin:bandMap.fMin,sSize:bandMap.sSize,fSize:bandMap.fSize,pointer:bandMap.refRep.pointer,rast:bandMap.refRep.rast,lines:bandMap.refRep.lines]]};ShowPage:PROC={data:ViewerData;IFviewer=NILORviewer.destroyedTHENviewer_ViewerOps.CreateViewer[$PDInterpOutputViewerClass,[name:"PDpage",column:left,iconic:TRUE]]ELSEViewerOps.PaintViewer[viewer,client];data_NARROW[viewer.data];data.nextPage_FALSE;data.sShift_-pageMap.sOrigin;data.fShift_-pageMap.fOrigin;DOIFviewer.destroyedORdata.nextPageTHENEXIT;Process.Pause[Process.MsecToTicks[200]];ENDLOOP;};EndImage:PUBLICPROC[request:PDQueue.Request]={separator:LONGSTRING_[160];String.Copy[separator,request.requestTime];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;String.AppendString[separator,request.fileName];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;String.AppendString[separator,request.requestor];THROUGH[0..2)DOString.AppendChar[separator,']ENDLOOP;ShowPage[];IFPDTextBitmap.fontName.length=0THENIFNOTPDTextBitmap.SetFont["[Indigo]<Peach>Fonts>TimesRoman36B.ks",request.requestor,request.requestorPassword]THENERROR;pageMap_pageMap.refRep.Reshape[0,[-1-PDTextBitmap.FontAscent[],-PDTextBitmap.FontAscent[],PDTextBitmap.FontAscent[]+PDTextBitmap.FontDescent[]+2,PDTextBitmap.TextWidth[separator]+2*PDTextBitmap.FontAscent[]]];{bits:PDInterpBitmap.BitmapDesc_[sOrigin:pageMap.sOrigin,fOrigin:pageMap.fOrigin,��qg/E�w_,O]%[yZ6wZ6qXmVbU? S Q PI NXL0KRIHuDwD�DyD�DwD��C  yAewAe�yAe�AeAewAey*2Ae�Ae*wAe-2\�?25:s=>Fy >�>!Gw#>�>$�y<ow<oS): �y:�:w:u 9  �yF9 �9 w 9 �9 7x �K5 �@y4)2w2y!52�2"�w2#i y,2�2,2/w22�20(y/3w/3�/3-u*<w*<�*<y*<�*<*<w*< A%1�3�( yp(�()(aw("R�#& y%Fw%Fy%F�%F�w%FI1�2w�y3^%F�%F4w8%F�%F#%y!w!y!�!�w!I1�2w�y3^!�!4w8!�! O%ywy��wI1�2w�y3^�4w8�� yYwY(�*g�y+Y�Y,UY/aY1w= y/ � 0G 3Sw7e � b �+7l@�0**�+� v'~ 's�������H��������TVm$M��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3sMin:pageMap.sMin,fMin:pageMap.fMin,sSize:pageMap.sSize,fSize:pageMap.fSize,pointer:pageMap.refRep.pointer,rast:pageMap.refRep.rast,lines:pageMap.refRep.lines];PDInterpBitmap.Fill[bits,[-10000,-10000,20000,20000],1];PDTextBitmap.TextToBitmap[dest:bits,string:separator,function:[and,complement]];};ShowPage[];};ReprintLastPage:PUBLICPROC[copies:CARDINAL]={IFcurrentHerald.password#PDFileFormat.passwordValueTHENRETURN;currentHerald.copies_copies;ShowPage[];};viewerClass:ViewerClasses.ViewerClass_NEW[ViewerClasses.ViewerClassRec_[init:ViewerInit,paint:ViewerPaint,scroll:ViewerScroll,coordSys:bottom,icon:tool]];ViewerData:TYPE=REFViewerDataRep;ViewerDataRep:TYPE=RECORD[sShift:INTEGER_0,fShift:INTEGER_0,nextPage:BOOLEAN_FALSE];HScrollHit:Menus.ClickProc=TRUSTED{viewer:ViewerClasses.Viewer_NARROW[parent];data:ViewerData_NARROW[viewer.data];IFdata=NILTHENRETURN;data.fShift_data.fShift+(IFmouseButton=redTHEN-128ELSE128);IFmouseButton=yellowTHENdata.fShift_-pageMap.fMin;ViewerOps.PaintViewer[viewer,client];};PageHit:Menus.ClickProc=TRUSTED{viewer:ViewerClasses.Viewer_NARROW[parent];data:ViewerData_NARROW[viewer.data];IFdata=NILTHENRETURN;data.nextPage_TRUE;���qg/E�w_7'( ]' [' Z@' X'iV'AUJ'S'Q$).37PS*-2 8K>?N MK] IuFfwFf�FfyFf�FfFf wFf$Ny)YFf�Ff*#w/Ff�Ff0w�2\�yDwD#_�%Dy7D�D8nD;zw@bD�DC�!uAp ?<y )^�y*<y�<y+w<y.+:�S�9* 7 5' 44Z20- y-�-w-i�yN-�-"w-! *F ym*F�*F&w*F�y *F�*F!w*F&6�(y_(�(w($�&yU&�&w&�%PyZ%P�%Pw%P�y! %P�%P!w#u Y w Y� Y#X�y%= Y� Y%w Y++�%R�y&�'w,9�,   �y � w$ � %X ycwc�yc�c~c%cw$c�c �@ !�#�y$N�$�w% .]�0By2�3pw6|y9�:Dw<yw �y#R�$ w' -�/S l&Euvwv�v!�y#yv�v$2wv)g�%R�y&�'w,9�,&  �y&�& w$&�&%X y w �y � ~ % w$ �   �yF � w q � ���������������TVm$����������������������������������������������������������������������������4};lfGraphicsData:CGContext.Ref=NARROW[Graphics.NewContext[].data];ViewerInit:ViewerClasses.InitProc=TRUSTED{viewerData:ViewerData_NEW[ViewerDataRep];menu:Menus.Menu_Menus.CreateMenu[1];Menus.InsertMenuEntry[menu,Menus.CreateEntry[name:"<<<-->>>",proc:HScrollHit]];Menus.InsertMenuEntry[menu,Menus.CreateEntry[name:"Page",proc:PageHit]];viewerData.sShift_0;viewerData.fShift_0;self.data_viewerData;self.menu_menu;};ViewerScroll:ViewerClasses.ScrollProc=TRUSTED{data:ViewerData_NARROW[self.data];IFdata=NILORop=queryTHENRETURN[0,100];IFop=thumbTHEN{data.sShift_-pageMap.sOrigin;RETURN[0,100]};IFamount=0THENRETURN[0,100];IFop=downTHENamount_-amount;data.sShift_data.sShift-amount;ViewerOps.PaintViewer[self,client];RETURN[0,100];};OnLFDisplay:PROC[graphics:Graphics.Context]RETURNS[BOOLEAN]={data:CGContext.Ref=NARROW[graphics.data];RETURN[data.device.Show=lfGraphicsData.device.Show]};GetViewerPixelMap:PROC[graphics:Graphics.Context]RETURNS[pixelMap:ImagerPixelMaps.PixelMap]={x,y,w,h:REAL;[x,y]_GraphicsOps.UserToDevice[graphics,0,0];IFGraphicsOps.UserToDevice[graphics,0,1].ty>yTHENERROR;[[xmax:w,ymax:h]]_Graphics.GetBounds[graphics];IFOnLFDisplay[graphics]THEN{sMin:INTEGER_Real.RoundLI[y]-Real.RoundLI[h];pixelMap_ImagerFrameBuffer.LFDisplay[];pixelMap_pixelMap.ShiftMap[-sMin,-Real.RoundLI[x]];pixelMap_pixelMap.Clip[[0,0,Real.RoundLI[h],Real.RoundLI[w]]];}ELSEpixelMap_ImagerPixelMaps.Create[0,[0,0,0,0]];};ViewerPaint:ViewerClasses.PaintProc=TRUSTED{data:ViewerData_NARROW[self.data];pixelMap:ImagerPixelMaps.PixelMap_GetViewerPixelMap[context];pixelMap.Transfer[pageMap.ShiftMap[data.sShift,data.fShift]];���qg/E�w_,[ $�y&[�['w,'[�[,uX wX�X&$�y( X�X(wX-�V  "F�y#V�V$w&V�V&U?_ �!]S&G6{ =Q PI&G6{;N L�KR�yIg� HC�F\uC  wC �C (�y*C �C +ywC 0�Ae  �yAe�Ae wAe%y y?w?�y?�?~?%w?Z a�"Fy&2?�?&?)w?/d1Ty>w>�y >�>w> (9�)y5r>�>6Fw>:<y<ow<o��y<o�<o<o w<o&'y:w:�yb:�:w: (%3�&9 �K "�#7x$ky5w5qa4)u0 w0�0y0�0w0 #y/G0�00w05R�y50�06ow;V0�0<=�>"�/2 a�y"F/2�/2#.w'/2�/2(y-w-q#�%t+u(w(�(y�(�(w(! 'y3H(�(4w(9S &#�$�%Ey%E�%Ew%E�%E#�'y!w!)/ �0?�y1t!�!2-!59w9K!�! O� �!ywy#�#w&��y���w�� hX?�?�-! ?�')440b�ywS}� . u w/�-(*�y*�*w/�  �y� w%y u*�," /1P �������O��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5};ViewerOps.RegisterViewerClass[$PDInterpOutputViewerClass,viewerClass];currentHerald.password_0;END.��qg/E�w_,[97� X�!3yU@w{U@�U@��������f��������TVm$�+����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpPage.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September20,19848:57:18amPDTDIRECTORYPDInterpReader,PDQueue;PDInterpPage:DEFINITIONS=BEGINInterpretPage:PROC[handle:PDInterpReader.Handle,request:PDQueue.Request,abort:LONGPOINTERTOBOOLEAN]RETURNS[ok:BOOLEAN];Interpretsonepage(maybemultiplepasses),andshipsitout.MayraisePDInterpReader.WarningorPDInterpReader.ErrororPDInterpOutput.ErrororPDInterpInput.AbortDoesnotcallPDInterpInput.ReportStatus.ReturnsFALSEupondocumentend.END.���x_:]/BZ '* -[$ $$) +WyXwXK!uUN w]UN�UNy[UN�UNA wUN {�y"`UN�UN#uQ wQ�QyQ�QwQ!0}5PXyPX�PXPXPX_PXyw%PX�PXy&�PX�PX&wPX, y.PX�PX/w4PX�PX4�xN $ L"'W,6.273M "]' (6~Kb!>I[TH%$yDwiD�D���������������TVm$���������������������PDInterpPageImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September20,19849:16:18amPDTLastEditedby:Pier,November30,19836:37pmDIRECTORYEnvironment,Inline,PDFileFormat,PDInterpReader,PDInterpOutput,PDInterpPage,PDInterpBitmap,PDInterpSysCalls,Heap,PDQueue;PDInterpPageImpl:PROGRAMIMPORTSInline,PDInterpReader,PDInterpOutput,PDInterpBitmap,PDInterpSysCalls,HeapEXPORTSPDInterpPage=BEGINCommandBuffer:TYPE=PDInterpReader.CommandBuffer;bitsPerWord:NAT=Environment.bitsPerWord;heapZone:UNCOUNTEDZONE=Heap.systemZone;totalAllocates,totalFrees:INT_0;availCount:NAT;--countofthenumberofleftoverrecordsonthefreelistLeftoverlisttypesLeftoverRef:TYPE=LONGPOINTERTOLeftover;Leftover:TYPE=RECORD[link:LeftoverRef_NIL,commandBuffer:CommandBuffer,colorType:PDInterpReader.ColorType,colorTileLoadAddress:INT_-1,priority:INT];InterpretPage:PUBLICPROC[handle:PDInterpReader.Handle,request:PDQueue.Request,abort:LONGPOINTERTOBOOLEAN]RETURNS[ok:BOOLEAN]={readHead,writeHead,availHead,writeTail:LeftoverRef_NIL;--headsandtailofleftoverlistscurrentColorType:PDInterpReader.ColorType;currentColorTileLoadAddress:INT_-1;currentPriority:INT_-1;leftovers:BOOLEAN;--can'tbefilledinuntilStartImagehashappenedcommandBuffer:CommandBuffer;band:PDInterpBitmap.BitmapDesc;bandMaxS:INT;cachedColorTile:PDInterpBitmap.Tile;cachedColorReference:INT_-1;GetColorTile:PROC={IFcurrentColorTileLoadAddress#cachedColorReferenceTHEN{cachedColorTile_PDInterpReader.ColorTileFromLoad[handle,cachedColorReference_currentColorTileLoadAddress,scratchPointer,scratchWords];};};���x_,]/BZ '* -[$ $$) +WZ5E"B$'*yVwVK #M ,U?r #.~9SPIy PI�PINwN%0vL'yKRwKR I�yI�IwF\ yF\�F\wF\\�AD y_D�DHwDY�>C yC �C C w!C �C "Ae yAe�AewAe!,�"? yW?�??w?�?x?�?Cw "f'L(-2b4V69O<o>}w: y:�:w:�yi:�:": Y:%w:(9y9�9w9\�yA9�9w9�7x9 �y|7x�7xew7x�7x5  4) 2y2�2 w2")�#0ya0�0w/2u+ w+�+y+�++w+ c%55*<y*<�*< l*<#*<)E*<+_w0*<�*<y1*<�*<2w*<7y:*<�*<;w@i*<�*<(��&  %o + 3o�y4&�&5w7&�&x8&�&8<?]%Fi5w#!y#!�!$&w!&L�' Oy O� Ow OA� y�w�x�!#'(+ 35w�  Yy]�wi� byYb�bwb!�#vu w�y�{w{�`�yw&�(y6�7w:�kW� (#�%b8  u ���������������TVm$������������������������������������������2TransferRectangle:PROC[rectangle:PDInterpBitmap.Rectangle]={SELECTcurrentColorTypeFROMnone=>ERROR;clear=>PDInterpBitmap.Fill[band,rectangle,0];ink=>PDInterpBitmap.Fill[band,rectangle,1];opaqueTile=>{GetColorTile[];PDInterpBitmap.TransferTile[band.Clip[rectangle],cachedColorTile];};transparentTile=>{GetColorTile[];PDInterpBitmap.TransferTile[band.Clip[rectangle],cachedColorTile,[or,null]];};ENDCASE=>ERROR;};DoLine:PROCEDURE[sMin,fMin,fSize:CARDINAL]={SELECTcurrentColorTypeFROMnone=>ERROR;clear=>PDInterpBitmap.Fill[band,[sMin:sMin,fMin:fMin,sSize:1,fSize:fSize],0];opaqueTile,ink=>PDInterpBitmap.Fill[band,[sMin:sMin,fMin:fMin,sSize:1,fSize:fSize],1];transparentTile=>PDInterpBitmap.TransferTile[band.Clip[[sMin:sMin,fMin:fMin,sSize:1,fSize:fSize]],cachedColorTile,[or,null]];ENDCASE=>ERROR;};TempColor:PROC[rectangle:PDInterpBitmap.Rectangle]={SELECTcurrentColorTypeFROMnone=>ERROR;clear=>NULL;ink=>NULL;opaqueTile=>{GetColorTile[];PDInterpBitmap.TransferTile[band.Clip[rectangle],cachedColorTile,[xor,complement]];};transparentTile=>GetColorTile[];ENDCASE=>ERROR;};AddLeftover:PROC={IFavailCount=0THEN{totalAllocates_totalAllocates+1;IFwriteHead=NILTHENwriteHead_writeTail_heapZone.NEW[Leftover_[link:NIL,commandBuffer:commandBuffer,colorType:currentColorType,colorTileLoadAddress:currentColorTileLoadAddress,priority:currentPriority]]ELSE{writeTail.link_heapZone.NEW[Leftover_[link:NIL,commandBuffer:commandBuffer,colorType:currentColorType,colorTileLoadAddress:currentColorTileLoadAddress,priority:���qg/E�u_,w_,�_,y_,�_,w_, 'B8I�:.�y]w]y#]�]#w[y[�[w/[�[Z5g+ 1X* 0V H�U?'S'15Q'PH!1�N'L'15KRyI'yHwHyH�Hfw!H�HF[uDwmD�DykD�DwD#y)D�D)w/KD�D03�2�yC wC y#C �C #wAeyAe�Aew/Ae�Ae?g+/37;?><o  !2,6:q:6#':9 7x',37;5r!S%0s2y4)w4)y4)�4)fw!4)�4)2u0w0�0y0�0Gw0F "4�5�y/3w/3y#/3�/3#w-y-�-w/-�-+gy+�+w=+�+*<y*<�*<wU*<�*<( H�&'%F'15#) !' O!1ywy�fw!��uY w;Y�Yy9Y�YwY��yw y�qw!}� ybwb yIb�b1b wb$y8fb�b9Nw;!b�b;y�w� (' 2 !jl(-ywd�'y&[�'Cw)�)z/y3�4w5�6 v "~ )x &8���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3currentPriority]];writeTail_writeTail.link;};}ELSE{availCount_availCount-1;--moveanodefromavailListtowriteListIFwriteHead=NILTHEN{writeHead_writeTail_availHead;availHead_availHead.link;}ELSE{writeTail.link_availHead;writeTail_availHead;availHead_availHead.link;};writeTail^_[link:NIL,commandBuffer:commandBuffer,colorType:currentColorType,colorTileLoadAddress:currentColorTileLoadAddress,priority:currentPriority];};};FreeList:PROC[head:LeftoverRef]={--thisprocoutheresotheUNWINDcancallittempHead:LeftoverRef;UNTILhead=NILDOtempHead_head^.link;heapZone.FREE[@head];totalFrees_totalFrees+1;head_tempHead;ENDLOOP;};CheckAbort:PROC={IFabort^THENERRORABORTED};availCount_0;DOENABLEUNWIND=>{FreeList[readHead];FreeList[writeHead];FreeList[availHead];availCount_0;};IFreadHead#NILANDreadHead.priority<handle.priorityTHEN{tempHead:LeftoverRef_readHead;commandBuffer_readHead.commandBuffer;currentColorTileLoadAddress_readHead.colorTileLoadAddress;currentColorType_readHead.colorType;currentPriority_readHead.priority;nowmovethisrecordfromreadListtoavailListreadHead_readHead.link;tempHead.link_availHead;availHead_tempHead;availCount_availCount+1;}ELSE{commandBuffer_PDInterpReader.Get[handle];currentColorTileLoadAddress_handle.colorTileLoadAddress;currentColorType_handle.colorType;currentPriority_handle.priority;};WITHcommandBufferSELECTFROM���qg/E�w_,]'['Z5�yXwXS�Vx%3V�V%)�*.1W68yU>wU> yIU>�U>1U> wU>$SyQwQd�PH'' NL'KQyKQ�KQ w!KQ�KQ" -Q 7 I!jH(-F[DuC wC �C yC �C wC �C vL &f�(K�x)C �C )- 02q5l7%9qAeTw?9 y>w>3yl>�>U>w<n:yU:�:wT:�:97w y5w5�54(u2 w2�2y2�2w2��y?2�2�w2 y%52�2%2(2-w3%2�23�0 y/1--)w- c-+*;y(w(y(�((dw(!!y6(�(6w(9�&J $��%%D A�!S#:!$ M"xq "-%j*,^wV_�ywS� A�!Si8" ry w  y � !w %�������;��������TVm$���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4stateChange:CommandBuffer.stateChange=>{SELECTstateChange.whatChangedFROMimageStart=>{band_PDInterpOutput.StartImage[handle.herald,handle.image,request];bandMaxS_band.sOrigin+band.sMin+band.sSize;leftovers_handle.image.leftOverMode;IFhandle.image.nBands=0THEN{PDInterpOutput.EndImage[request]};};imageEnd=>{[]_PDInterpOutput.EndBand[];IFreadHead#NILTHENERROR;--DEBUGGINGCHECK!!readHead_writeHead;writeHead_NIL;PDInterpOutput.EndImage[request];FreeList[readHead];--fromthisimageFreeList[writeHead];--fromthisimageFreeList[availHead];availCount_0;RETURN[TRUE];};priorityChange=>NULL;colorChange=>NULL;bandChange=>{CheckAbort[];band_PDInterpOutput.EndBand[];bandMaxS_band.sOrigin+band.sMin+band.sSize;IFreadHead#NILTHENERROR;--DEBUGGINGCHECK!!readHead_writeHead;writeHead_NIL;};loadChange=>NULL;documentEnd=>RETURN[FALSE];ENDCASE=>ERROR;};maskRectangle:CommandBuffer.maskRectangle=>{TransferRectangle[[maskRectangle.sMin,maskRectangle.fMin,maskRectangle.sSize,maskRectangle.fSize]];IFleftoversANDmaskRectangle.sMin+maskRectangle.sSize>bandMaxSTHENAddLeftover[];};maskTrapezoid:CommandBuffer.maskTrapezoid=>{EdgeBlock:TYPE=RECORD[fPos,fIncr:Environment.LongNumber];MakeEdge:PROC[fMinLast,fMin,sSize:CARDINAL]RETURNS[edge:EdgeBlock]={edge.fPos.highbits_fMin;edge.fPos.lowbits_0;edge.fIncr.highbits_fMinLast-fMin;edge.fIncr.lowbits_0;���qg/E�w_, F/`1�y]'w]y,/]�],w[8 "�Z5I� T(X $VI":�#"U?I �"eySIwS*�+�y--S�S-wQ"y2Q�QwPIIN8"O�LI� yKRIwKRy$KR�KR%KR&KR*nw.KR�KRx/}KR�KR/ 9?NwIIHI y"}H�H#ew$H�HF\I!DIx'D�D(B+.wC Ix(,C �C (,].wAeI?I y>Iw> �y!>�>!w$D>�>$�<oI:8 "y%H:�:&1w(:�:9 8 !<y#9 �9 $w'9 �9 7x8 !=#�5I 4)I� T2I+y0Iw0y$0�0%0&0*nw.0�0x/}0�0/ 9?Nw/2I-I y"}-�-#ew$-�-+I*<8 y#c*<�*<$Lw&*<�*<(8 "y$(�(%w(*�y*(�(+8w.(�(.�y&8w&:y!&�&"w%&�&%E'# 25f�!'&/ O%y'wy]�0w�/y9t���:-wY '  35�b' yb�b>wb!�y#b�b$wb)N-u'w�y�,w!�" (_,5y0 �0w6W�y7?�8w=Jl A�!&�8$v�&8#�%~ u8$�&\,Y�-W 8$�&[�������1��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5IFsSize>1THENedge.fIncr.li_edge.fIncr.li/sSize;};fMinBox:CARDINAL_MIN[maskTrapezoid.fMin,maskTrapezoid.fMinLast];fMaxBox:CARDINAL_MAX[maskTrapezoid.fMin+maskTrapezoid.fSize,maskTrapezoid.fMinLast+maskTrapezoid.fSizeLast];fSizeBox:CARDINAL_fMaxBox-fMinBox;trapMaxS:CARDINAL_maskTrapezoid.sMin+maskTrapezoid.sSize;s:CARDINAL_maskTrapezoid.sMin;sMinBand:CARDINAL_MIN[band.sOrigin+band.sMin,maskTrapezoid.sMin+maskTrapezoid.sSize];sMaxBand:CARDINAL_MIN[bandMaxS,trapMaxS];calculateinitialedges:minEdge:EdgeBlock_MakeEdge[fMinLast:maskTrapezoid.fMinLast,fMin:maskTrapezoid.fMin,sSize:maskTrapezoid.sSize];maxEdge:EdgeBlock_MakeEdge[fMinLast:maskTrapezoid.fMinLast+maskTrapezoid.fSizeLast,fMin:maskTrapezoid.fMin+maskTrapezoid.fSize,sSize:maskTrapezoid.sSize];TempColor[[sMin:maskTrapezoid.sMin,fMin:fMinBox,sSize:maskTrapezoid.sSize,fSize:fSizeBox]];WHILEs<sMinBandDOminEdge.fPos.lc_minEdge.fPos.lc+minEdge.fIncr.li;maxEdge.fPos.lc_maxEdge.fPos.lc+maxEdge.fIncr.li;s_s+1;ENDLOOP;WHILEs<sMaxBandDODoLine[sMin:s,fMin:minEdge.fPos.highbits,fSize:maxEdge.fPos.highbits-minEdge.fPos.highbits];minEdge.fPos.lc_minEdge.fPos.lc+minEdge.fIncr.li;maxEdge.fPos.lc_maxEdge.fPos.lc+maxEdge.fIncr.li;s_s+1;ENDLOOP;TempColor[[sMin:maskTrapezoid.sMin,fMin:fMinBox,sSize:maskTrapezoid.sSize,fSize:fSizeBox]];IFleftoversANDtrapMaxS>bandMaxSTHENAddLeftover[];};maskRunGroup:CommandBuffer.maskRunGroup=>{s:CARDINAL_maskRunGroup.sMin;sMinBand:CARDINAL_MIN[band.sOrigin+band.sMin,maskRunGroup.sMin+maskRunGroup.sSize];sMaxBand:CARDINAL_MIN[band.sOrigin+band.sMin+band.sSize,maskRunGroup.sMin+maskRunGroup.sSize];run:LONGPOINTERTOPDFileFormat.Run_maskRunGroup.pointer;TempColor[[maskRunGroup.sMin,maskRunGroup.fMin,maskRunGroup.sSize,maskRunGroup.fSize]];WHILEs<sMinBandDOIFrun.lastRunTHENs_s+1;run_run+SIZE[PDFileFormat.Run];���qg/E�y_,8w_,Q��y _,�_,!tw_,$ ,�-]8['yp[�[;w#[�y[$w'[�['wZ6X'yVw0V�yV9w!V�V"U'U?0S'y[S�S%w#S�S$Q'yQ�QwQ$�&>'PI'yPI�PItwPId� N'yCN�NwN$�y&N�N'w(N�N)RL(KS'yoKS�KS:wKS%*�y&KS�KS'w)KS�KS)~0 xI' wH'|$a�%F\'+8DC '$�&Af/7?'2><p'"0 4:+:%() y9!'w9!��y$g9!�9!%M�w7y8#K�$.�058#w�%/D�1)4*8�@���y28w2�2y0'w0��y$0�0%y�w/48 ".#'5- -+8#K�$.�0*=8#w�%/D�1)(8�@���y&8w&�&%G'"0 4:+#%() y!'w!y]!�!0w!!y.!�!/w!2 Q' 436�'y�twd� Z'yCZ�ZwZ$�y&Z�Z'w(Z�Z)R& 'yo � :w %*�y& � 'w) � )~"d&'y6�'#w%1�m',%y'w��y$g�%M� w8w w y"_ w� w#w w&$�'-�(�)�+ 8�[�y! � "uw$Q � $���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6ENDLOOP;WHILEs<sMaxBandDOIFrun.fMin+run.fSize>maskRunGroup.fSizeTHENERROR;DoLine[sMin:s,fMin:run.fMin+maskRunGroup.fOffset,fSize:run.fSize];IFrun.lastRunTHENs_s+1;run_run+SIZE[PDFileFormat.Run];ENDLOOP;TempColor[[maskRunGroup.sMin,maskRunGroup.fMin,maskRunGroup.sSize,maskRunGroup.fSize]];IFleftoversANDmaskRunGroup.loadAddress>=0ANDmaskRunGroup.sMin+maskRunGroup.sSize>bandMaxSTHEN{maskRunGroup.sSize_maskRunGroup.sSize-(s-maskRunGroup.sMin);maskRunGroup.sMin_s;maskRunGroup.runCount_-1;--unused,eventuallyeliminatefromDEFmaskRunGroup.pointer_run;AddLeftover[];};};maskSamples:CommandBuffer.maskSamples=>{rectangle:PDInterpBitmap.Rectangle_PDInterpBitmap.Window[maskSamples.samples];TempColor[rectangle];SELECTcurrentColorTypeFROMnone=>ERROR;clear=>PDInterpBitmap.Transfer[band,maskSamples.samples,[and,complement]];opaqueTile,ink=>PDInterpBitmap.Transfer[band,maskSamples.samples,[or,null]];transparentTile=>{bounds:PDInterpBitmap.Rectangle_PDInterpBitmap.Intersect[rectangle,PDInterpBitmap.Window[band]];scratchWords:INT_Inline.LongMult[bounds.sSize,(bounds.fSize+bitsPerWord-1)/bitsPerWord];buffer:LONGPOINTER_PDInterpSysCalls.AllocateSpace[scratchWords];destDesc:PDInterpBitmap.BitmapDesc_PDInterpBitmap.Reshape[pointer:buffer,words:scratchWords,bounds:bounds];GetColorTile[];PDInterpBitmap.TransferTile[dest:destDesc,tile:cachedColorTile];PDInterpBitmap.Transfer[destDesc,maskSamples.samples,[and,null]];PDInterpBitmap.Transfer[band,destDesc,[or,null]];PDInterpSysCalls.FreeSpace[buffer];};ENDCASE=>ERROR;TempColor[rectangle];IFleftoversANDmaskSamples.loadAddress>=0ANDmaskSamples.samples.sOrigin+maskSamples.samples.sMin+maskSamples.samples.sSize��qg/E�y_e8w_e�_ey]'w]��y$]�]%y�\8w\'s�(y6\�\6\9w=\�\Zn8 ".#'=1X yW 8wW  y"_W �W #wW &$�'-�(�)�+Ux8�[�y!Ux�Ux"uw$QUx�Ux$yS8wS�SR)',P%yN'wNy]N�N0wN!y6N�N6wM2-y:M2�M2;wM2>�K8<I8H<8)w�+x-,H<�H<-3 9_F HwD8CE8 A8?'>N  03�<' }. �;�+9X'y7'w7y'#7�7'w6 8y@6 �6 w#Q6 �6 4a822 } 18 #,%/k '*^-8"%T�,I 1E�*t#('&I y$L'&�'&$w'&&�(i%~*#Iy#�# ##w"/. IB %) . 3c9II!06BI!1 I.47cLI#Iy8w:y!�"w%�U'y 'w y] � 0w !y4l � 5@w N�������v��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������7>bandMaxSTHENAddLeftover[];};colorSamples:CommandBuffer.colorSamples=>{PDInterpBitmap.Transfer[band,colorSamples.samples];};deviceCommand:CommandBuffer.deviceCommand=>{};ENDCASE=>NULL;ENDLOOP;};scratchPages:INT=4;scratchWords:INT_scratchPages*Environment.wordsPerPage;scratchPointer:LONGPOINTER_PDInterpSysCalls.AllocateSpace[scratchWords];END.���qg/E�w_,�.y _,�_, w_,# ]'[ 03U�Z6'*X'V 47�U@'ySwSyS�Sw S�SyQwQ�QPJL yJL�LwL�KT yKT�KTOwKTu�&IyHI�II9wI!�#g-yF^wiF^�F^�������Y��������TVm$�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpReader.mesaCopyright(C)1983,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,19849:51:32amPDTLastEditedby:Pier,November22,19832:44pmDIRECTORYPDInterpBasic,PDFileFormat,PDInterpBitmap,Stream;PDInterpReader:DEFINITIONS=BEGINHandledefinitionHandle:TYPE=LONGPOINTERTORep;Rep:TYPE=RECORD[stream:Stream.Handle,herald:PDFileFormat.Herald,image:PDFileFormat.StartImage,bandNumber:CARDINAL,sMinBand:CARDINAL,sSizeBand:CARDINAL,colorType:ColorType,colorTileLoadAddress:INT,priority:INT,loadWords:INT,private:LONGPOINTERTOPrivateRep,index:INT,page:INT,pass:INT,status:PDInterpBasic.Status,warningCount:INT];ColorType:TYPE={none,clear,ink,opaqueTile,transparentTile};PrivateRep:TYPE;ColorTileaccess:ColorTileFromLoad:PROC[handle:Handle,colorTileLoadAddress:INT,scratchPointer:LONGPOINTER_NIL,scratchWords:INT_0]RETURNS[PDInterpBitmap.Tile];ErrorsandSignalsError:ERROR[handle:Handle,code:PDInterpBasic.PDErrorCode,wordIndex,wordCount:INT];Warning:SIGNAL[handle:Handle,code:PDInterpBasic.PDWarningCode,wordIndex,wordCount:INT];FilecontrolOpen:PROC[stream:Stream.Handle]RETURNS[Handle];MayraisePDFileReader.ErrororPDFileReader.WarningAssumesthestreamispositionedatthestartofaPDfile.Close:PROC[handle:Handle]RETURNS[stream:Stream.Handle];DoesaNOTclosethestream.ReadingoperationsGet:PROC[handle:Handle]RETURNS[CommandBuffer];MayraisePDFileReader.ErrororPDFileReader.Warning��x_:]/BZ '* -[$ -#s(\*ZCV$S&),yXwXK  )W4uUM wUM�UMyUM�UM wUM!�y#UM�UM$YxS wQyLQ�QwQ�yQ�Q\QQ%5wQ'NPVyfPV�PVwPV�yPV�PVwPV/�N MK`I y�I�Iw"7I�IHy H�Hw WH�HFi y Fi�Fiw AFi�FiD  Cy!&C�C!w#1C�CAryrAr�Arw~Ar�Ar? yy?�?w?�?>#y>#�>#># >#!w>## <|yI<|�<|wT<|�<|:y:�:.w:�:9-yw9-�9-w9-�9-7U5 y5�5w460 yb0�0w0�$3'* 2)/? y/?�/?Tw/?�/?x+yu*Iw*I�*Iy*I�*I|w*I!|&,y:9*I�*I:w<D*I�*I(y,(�((w($�y&K(�('3w(V(�()3 y26(�(2w(4�6Ry7(�(8w&x#u"w#"�"y "�"w"$Q(:6 \ y} \� \w \� \�uw�y�w�!d&*\   y  � !0w" � #4�xuw$�y!�w y'�(w-xo3n%'+ &(*-/�03Wu w9 � y7 � w By# � $Xw ).xy M*2 u w% � y# � w .y"q � #Ew (|x 3n%'�������^��������TVm$4��������������������������������������������������������2CommandBuffer:TYPE=RECORD[SELECTcmd:*FROMmaskRectangle=>[sMin,fMin,sSize,fSize:CARDINAL],maskTrapezoid=>[sMin,fMin,fMinLast,sSize,fSize,fSizeLast:CARDINAL],maskRunGroup=>[sMin,fMin,sSize,fSize:CARDINAL,fOffset:CARDINAL,--addthistofMinofeachrunrunCount:INT,--numberofrunspointer:LONGPOINTERTOPDFileFormat.Run,loadAddress:INT---1ifnotintheload],maskSamples=>[loadAddress:INT,---1ifnotintheloadsamples:PDInterpBitmap.BitmapDesc],colorSamples=>[samples:PDInterpBitmap.BitmapDesc],deviceCommand=>[deviceCommandPointer:LONGPOINTER,deviceCommandWords:CARDINAL],stateChange=>[whatChanged:WhatChanged,loadChangeStart,loadChangeLength:INT],ENDCASE];WhatChanged:TYPE={imageStart,imageEnd,priorityChange,colorChange,bandChange,loadChange,documentEnd};END.��qg/E�w^ y^�^w^\�yA^�^ w^$�y\w\O�y\�\=w[H u �Y y$vY�Y%AwWVR *�T#!&* y1 T�T1wSQ\ %�O y$vO�O%Aw*O�ON y+N �N w bN �N x!?N �N !�"%K'),.1wLfyLf�LfDwLf�LfxLf�Lf<� 9%&wJyXJ�JJHJ#wJ&I ygI�IxI!m#$r&({*wGpE �D! ygD!�D!wrD!�D!x OD!�D! �!#t$'-(+wBz@?+ l�=;:5  �8y$b8�8%8(Sw-o8�86y#6�6$w5?3 Q�1 9 0Iy,0I�0I,w.y,w+S) yz)�)3w)��( 7!* 3@ &]  $y!gwi!g�!g���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDInterpReaderImpl.mesaMichaelPlass,December2,19835:11pmLastEditedby:Pier,November22,19832:45pmLastEditedby:Lamming,December9,19831:27pmDIRECTORYEnvironment,Inline,PDInterpBasic,PDFileFormat,PDInterpBitmap,PDInterpReader,PDInterpSysCalls,Heap,Stream;PDInterpReaderImpl:PROGRAMIMPORTSInline,PDInterpBitmap,PDInterpSysCalls,Heap,StreamEXPORTSPDInterpReader=BEGINOPENPDInterpReader;bitsPerWord:NAT=Environment.bitsPerWord;zone:UNCOUNTEDZONE=Heap.systemZone;CheckHerald:PROC[herald:PDFileFormat.Herald]={status:PDInterpBasic.Status_nil;IFherald.maxLoadWord>200000THENstatus_unreasonableLoadSize;IFNOT(herald.copiesIN[1..1000])THENstatus_unreasonableNumberOfCopies;IFNOT(herald.imageSSizeIN[80..32767])ORNOT(herald.imageFSizeIN[80..32767])THENstatus_unreasonableImageSize;IFNOT(herald.bandSSizeIN[8..32767])THENstatus_unreasonableBandSSize;IFNOT(herald.sResolutionIN[10..10000])ORNOT(herald.fResolutionIN[10..10000])THENstatus_unreasonableResolution;IFherald.version#PDFileFormat.versionValueTHENstatus_wrongFormatVersion;IFherald.password#PDFileFormat.passwordValueTHENstatus_invalidPassword;IFstatus#nilTHENError[NIL,status,0,SIZE[PDFileFormat.Herald]];};AllocateSpace:PROC[handle:Handle]={private:Private_handle.private;bufferWords:INT_(Inline.LongMult[handle.herald.bandSSize,(handle.herald.imageFSize+bitsPerWord-1)/bitsPerWord]+100)*2;private.loadPointer_PDInterpSysCalls.AllocateSpace[handle.herald.maxLoadWord+bufferWords];private.loadWordsAllocated_handle.herald.maxLoadWord;private.bufferOriginPointer_private.loadPointer+private.loadWordsAllocated;private.bufferWordsAllocated_bufferWords;private.bufferWordCount_0;};Open:PUBLICPROC[stream:Stream.Handle]RETURNS[handle:Handle]={bytesTransferred:CARDINAL;why:Stream.CompletionCode;sst:Stream.SubSequenceType;���x_,]$R#%&3[E"B$'*Z5E%d&*7-EyWwV  '| 1Tk'+uQwIQ�QyFQ�QPIwPI%1%53yNwN L�yL�LLwLI yqI�IYwIj�OHyH�HHwH �"suD wD�DyD�DSwDS t.u�0Z�C C"_�#yAewAe -�!ay&Ae�Ae&wAe)-�/1y??w? y\?�?�w? 3 y&?�?&w>�hy<o<ow<oy!k<o�<o!�w<o#B y::(w:*y":�:"�w:# y+5:�:+w:.2�9 y7x7xw7xy 7x�7x!G�w7x" y)I7x�7x*w7x-0�2ry55w5y!5�5" �w5#y y4)4)(w4)*y"%4)�4)"�w4)# y+A4)�4)+w4)/2�2y0w0 z�_y.0�0/Sw02_66�/3y-w-�y1-�-1w-48�+y*=w*=q�Vyh*=�*=!w*=-y!*=�*="w#*=�*=$(y*d*=�*=+w,*=�*=-B(u%F wS%F�%FyQ%F�%Fw%F!\&�(�# �=! y!�!w!�) P=�FY"�#!�#C/� c##�$  �";uw�y�wp y*�+Zw05;8�=�y�w"'� vf h���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2herald:PDFileFormat.Herald;heraldPtr:LONGPOINTER=@herald;[bytesTransferred,why,sst]_Stream.GetBlock[stream,[blockPointer:heraldPtr,startIndex:0,stopIndexPlusOne:Environment.bytesPerWord*SIZE[PDFileFormat.Herald]]];IFbytesTransferred<Environment.bytesPerWord*SIZE[PDFileFormat.Herald]THENError[NIL,unexpectedEOF,0,SIZE[PDFileFormat.Herald]];CheckHerald[herald];BEGINprivate:Private_zone.NEW[PrivateRep];handle_zone.NEW[Rep_[stream:stream,herald:herald,image:[0,FALSE,FALSE,FALSE,black,0,0,0,0],bandNumber:0,sMinBand:0,sSizeBand:0,colorType:none,colorTileLoadAddress:-1,priority:0,loadWords:0,private:private,index:0,page:0,pass:0,status:nil,warningCount:0]];handle.index_SIZE[PDFileFormat.Herald];handle.sSizeBand_herald.bandSSize;{ENABLEUNWIND=>{zone.FREE[@private];zone.FREE[@handle];};AllocateSpace[handle];};END;PDInterpSysCalls.SetDisplayLights[107];};Close:PUBLICPROC[handle:Handle]RETURNS[stream:Stream.Handle]={private:Private_handle.private;stream_handle.stream;IFprivate.loadPointer#NILTHENPDInterpSysCalls.FreeSpace[private.loadPointer];zone.FREE[@private];zone.FREE[@handle];PDInterpSysCalls.SetDisplayLights[109];};ColorTileFromLoad:PUBLICPROC[handle:Handle,colorTileLoadAddress:INT,��qg/E�w_,] yv]�]/]fw]!�"[3!�#p2 ; Z6 DXy# X�X#w%X�X%yVwV�Sy/V�V09w2V�V2xyU?wU?yU?�U?w*U?�U? &y(U?�U?(w*U?�U?*SyQwPI�Oy!hPI�PI"Pw$$PI�PI$ N�y1N�NwN�NP"J�#�LKRIyI�IDw)I�Iy I�I w#I�Iy$I�I%9w(I�I(,.01H F\1D C  Ae#7?> <o,:Z9 7x5f4) �20 )�y0�0Uw10�0/3�x-�y-�-n+w+P�*<'y@*<�*<w?*<�*< ('y@(�(w?(�(&'%E#y!w!�! O'uXw(X�Xy&X�XXwX y&,X�X'�wX,71 ;M�=2� �= c� ybwbi�y Nb�b!6b"w0y �w �o ky k�kw k�ko'u w � y � k |w $#).y< � =Jw> � ���������������TVm$|������������������������������������������������������������������������������������������3scratchPointer:LONGPOINTER,scratchWords:INT]RETURNS[PDInterpBitmap.Tile]={private:Private=handle.private;tile:LONGPOINTERTOPDFileFormat.Tile=private.loadPointer+colorTileLoadAddress;words:INT=Inline.LongMult[tile.sSize,(tile.fSize+(bitsPerWord-1))/bitsPerWord];bitmap:PDInterpBitmap.BitmapDesc_PDInterpBitmap.Reshape[tile+SIZE[PDFileFormat.Tile],words,[tile.sMin,tile.fMin,tile.sSize,tile.fSize]];RETURN[PDInterpBitmap.CreateTile[rectangle:[tile.sMin,tile.fMin,tile.sSize,tile.fSize],phase:tile.phase,rasterPointer:tile+SIZE[PDFileFormat.Tile],scratchPointer:scratchPointer,scratchWords:scratchWords]];};LongBlockTransfer:PROC[source:LONGPOINTER,count:INT,dest:LONGPOINTER]={WHILEcount>LAST[CARDINAL]DOInline.LongCOPY[source,LAST[CARDINAL],dest];source_source+LAST[CARDINAL];dest_dest+LAST[CARDINAL];count_count-LAST[CARDINAL];ENDLOOP;Inline.LongCOPY[source,count,dest];};Private:TYPE=LONGPOINTERTOPrivateRep;PrivateRep:PUBLICTYPE=RECORD[loadPointer:LONGPOINTER_NIL,loadWordsAllocated:INT_0,bufferOriginPointer:LONGPOINTER_NIL,bufferWordsAllocated:INT_0,bufferWordCount:INT_0];BlockDescription:TYPE=RECORD[pointer:LONGPOINTER,words:CARDINAL];ReadLocate:PROC[handle:Handle,words:INT]RETURNS[blockDescription:BlockDescription]={Thebufferstoragemaygetre-usedwiththenextReadLocateorReadBlock;private:Private_handle.private;bytesWanted:CARDINAL_Environment.bytesPerWord*MIN[words,private.bufferWordsAllocated];bytesTransferred:CARDINAL;why:Stream.CompletionCode;sst:Stream.SubSequenceType;[bytesTransferred,why,sst]_Stream.GetBlock[handle.stream,[blockPointer:��qg/E�w_,y_,�_,_, w"(_,�_,# y,_,�_,,rw._,�_,y._,�_,/w]�z�[ �Z6yZ6�Z6Z6Z6]wZ6w+N�-49�XVyyV�VwV �U?*S )"Qc�yHQ�QwQ�Q'PIN z  %~ LyKRwKR`I Z  % + H_ F\ �yF\�F\ {w"WF\�F\"DkC   Ae?u<owm<o�<oyk<o�<ow<oy$><o�<o$<o(.w-K<o�<o.'y2x<o�<o2w4<o�<o5`y8<o�<o9v:w:�:��y9 w9 T+�y`9 �9 wD9 �y9 w#9 �9 y$9 �9 %�w7xy"7x�7x#w%7x�y7x&1w,g7x�7x,�-5T�0�y5�5w!5�y5"]w(5�5(�4)�uY�y>4)�4)w#4)�y4)w%4)�4)& �2�h?�y=2�2w !2�y2 w&2�2'�y0w0�0/3 %-*<y*<�*<w*<t�yY*<�*<*<J*<"w*<% ( yx(�( (0w(�y (�(![w(%�& y&�&&"B�#w%&�&%Fy %F�%Fww%F �")#y#�#y#!'7�(tw*#�#!y,!�!w!!�#I Oy O� O"w OH� �Yy"Y�YwY�yxY�Y LwY$y*Y�Y+IY.w3Y�Y4zy9�Y�Y9w?7Y�Y?�u w�y�w %=y)�*-w+�y w "-�/�xbN>!~&')"+n. 57 w �= y�tw d�!y38�4Iw5�5ly�w"'�f uh 3!�#p7 ���������������TVm$z������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4private.bufferOriginPointer,startIndex:0,stopIndexPlusOne:bytesWanted]];IFbytesTransferred<bytesWantedTHEN{handle.status_unexpectedEOF;Error[handle,unexpectedEOF,handle.index,words]};blockDescription.pointer_private.bufferOriginPointer;blockDescription.words_private.bufferWordCount_bytesTransferred/Environment.bytesPerWord;handle.index_handle.index+blockDescription.words;};ReadBlock:PROC[handle:Handle,dest:LONGPOINTER,words:INT]={bytesWanted:CARDINAL_Environment.bytesPerWord*words;bytesTransferred:CARDINAL;why:Stream.CompletionCode;sst:Stream.SubSequenceType;[bytesTransferred,why,sst]_Stream.GetBlock[handle.stream,[blockPointer:dest,startIndex:0,stopIndexPlusOne:bytesWanted]];IFbytesTransferred<bytesWantedTHEN{handle.status_unexpectedEOF;Error[handle,unexpectedEOF,handle.index,words]};handle.index_handle.index+bytesTransferred/Environment.bytesPerWord;};CheckBB:PROC[handle:Handle,sMin,fMin,sSize,fSize:CARDINAL,errorWordCount:INT]={IFLONG[sMin]+sSize>handle.herald.imageSSizeORLONG[fMin]+fSize>handle.herald.imageFSizeORfMin<handle.image.fMinPageORfMin+fSize>handle.image.fMinPage+handle.image.fSizePageTHENRaisePDError[handle,objectOutOfBounds,errorWordCount];IFsMin+sSize<=handle.sMinBandORsMin>=handle.sMinBand+handle.sSizeBandTHEN{RaisePDWarning[handle,objectOutOfBand,errorWordCount];};};Get:PUBLICPROC[handle:Handle]RETURNS[CommandBuffer]={private:Private_handle.private;command:PDFileFormat.Command;BadLoadReference:PROC[dataWords:INT]={RaisePDError[handle,badLoadReference,SIZE[PDFileFormat.Command]+dataWords];};IFhandle.priority=LAST[INT]THEN{ans:CommandBuffer.stateChange;ans.loadChangeStart_ans.loadChangeLength_0;handle.sMinBand_handle.sMinBand+handle.sSizeBand;handle.bandNumber_handle.bandNumber+1;handle.priority_0;handle.colorType_ink;ans.whatChanged_bandChange;IFhandle.bandNumber=handle.image.nBandsTHEN{ans.whatChanged_imageEnd;handle.colorType_none;��qg/E�w_," )+_79 y]w]�S y&]�]'Hw]*U 36�4 [ 8 $ -:Z6 5�!Xy�!0�V*U? � "�$SuPIwXPI�PIyVPI�PIwPI`$y'PI�PI(+w0PI�PI1y6KPI�PI6w8VPI�PI9>�;#�N yN�NtwN d�!LyL�Lw"'L�LKRfIhH3!�#p7 F\ )Z yDwD�S y&D�D'HwD*U 36�4 C  8 $ -:Ae � "�$*?u<ow}<o�<oyz<o�<o"w<o"#'+s/=y3<o�<o3w9U<o�<o:y:�:'w:�:��y9 9 w9 �9 jU�:� y7y7y(w7y�7y� $�!Yy5w5(�y4)w4)(��&+�-y2w2"V/y0w0#�zy/3w/3(Ey0/3�/30w/33�-"-+*<u&w&�&y&�&&w&ry%&�&%w&+#6x�8]�%F �=#u!w1!�!y.!�!w! y(!�!) w*!�!+�-{� O ywR�!�yYwY�yY�Yw Y�yY!w#"Y�Yy$ Y�Y$wY'� �!=/T�0b�*�,p�!n.J�0/S�l�m� yw!�#my0�1Jw4V� u �! �!~�������\��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5handle.status_betweenPages;};RETURN[ans];};ReadBlock[handle,@command,SIZE[PDFileFormat.Command]];WITHcommandSELECTFROMimagingCommand:PDFileFormat.Command.imaging=>{IFhandle.colorType=noneTHEN{RaisePDError[handle,missingStartImage,SIZE[PDFileFormat.Command]];ERROR};SELECTimagingCommand.comFROMmaskSamplesRef=>{ans:CommandBuffer.maskSamples;maskSamplesRef:PDFileFormat.MaskSamplesRef;loadAddress:Environment.LongNumber;samples:LONGPOINTERTOPDFileFormat.SampleArray;words:INT;ReadBlock[handle,@maskSamplesRef,SIZE[PDFileFormat.MaskSamplesRef]];loadAddress.highbits_imagingCommand.addrHighBits;loadAddress.lowbits_maskSamplesRef.addrLowBits;ans.loadAddress_loadAddress.li;IFans.loadAddress<0ORans.loadAddress+SIZE[PDFileFormat.SampleArray]>handle.loadWordsTHENBadLoadReference[SIZE[PDFileFormat.MaskSamplesRef]];samples_private.loadPointer+loadAddress.li;words_Inline.LongMult[samples.sSize,(samples.fSize+(bitsPerWord-1))/bitsPerWord];IFans.loadAddress+SIZE[PDFileFormat.SampleArray]+words>handle.loadWordsTHENBadLoadReference[SIZE[PDFileFormat.MaskSamplesRef]];CheckBB[handle,maskSamplesRef.sMin,maskSamplesRef.fMin,samples.sSize,samples.fSize,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskSamplesRef]];ans.samples_[sOrigin:maskSamplesRef.sMin,fOrigin:maskSamplesRef.fMin,sMin:0,fMin:0,sSize:samples.sSize,fSize:samples.fSize,pointer:samples+SIZE[PDFileFormat.SampleArray],rast:(samples.fSize+(bitsPerWord-1))/bitsPerWord,lines:samples.sSize];RETURN[ans]};maskRunGroupRef=>{ans:CommandBuffer.maskRunGroup;maskRunGroupRef:PDFileFormat.MaskRunGroupRef;loadAddress:Environment.LongNumber;runGroup:LONGPOINTERTOPDFileFormat.RunGroup;run:LONGPOINTERTOPDFileFormat.Run;s:CARDINAL_0;runCount:CARDINAL_0;���qg/E�w_, F� ]y[w[qZ5Xy$X�X%ew'BX�X'yVwVyV�VVuU? wU?�U?3r6�ySwS!�#}y&S�S'wS*�Q'$yPHwuPH�PHyN'wL'yKRwKRy(@KR�KR(uI' wI!$I�H8&F[8$VD8 !C 8yC �C C "C (nwC *Ad8yAd�Ad(wAd�Ad?8$y> w>�><n8&&�':8%�'-98#W�$y7w8w7w$�&3�y'h7w�7w(D�w7w)3�y5 w5�5.�/y;'5�5;w4) y%4)�4)&nw(J4)�4)(28c�+�-08E�/2 -y-8w-$�y&-�-'w)_-�-);v�=[+ �?y&+�+'Mw*< y%*<�*<&nw(J*<�*<((8$ 2b& " y%F w%F�%Fy-%F�%F.w0h%F�%F0#8 �"8'6K! (X,Z-13j7V P  & y � w"�"4 ,6Z y8w 8uc'wc"%�8&8%l8 !8y ?� $/)w+8yG�� 8%w' v8y v� vw v!u�# 8y � w &�(E���������������TVm$z������������������������������������������������������������������������������������������������������6words:INT_0;fSize:CARDINAL_0;ReadBlock[handle,@maskRunGroupRef,SIZE[PDFileFormat.MaskRunGroupRef]];loadAddress.highbits_imagingCommand.addrHighBits;loadAddress.lowbits_maskRunGroupRef.addrLowBits;ans.loadAddress_loadAddress.li;IFans.loadAddress<0ORans.loadAddress+SIZE[PDFileFormat.RunGroup]>handle.loadWordsTHENBadLoadReference[SIZE[PDFileFormat.MaskRunGroupRef]];runGroup_private.loadPointer+loadAddress.li;ans.pointer_run_private.loadPointer+loadAddress.li+SIZE[PDFileFormat.RunGroup];WHILEs<runGroup.sSizeDOIFINT[run-private.loadPointer]>=handle.loadWordsTHENBadLoadReference[SIZE[PDFileFormat.MaskRunGroupRef]];IFLONG[run.fMin]+run.fSize>fSizeTHENfSize_LONG[run.fMin]+run.fSize;IFrun.lastRunTHENs_s+1;run_run+SIZE[PDFileFormat.Run];ENDLOOP;ans.runCount_runCount;CheckBB[handle,maskRunGroupRef.sMin,maskRunGroupRef.fMin,runGroup.sSize,fSize,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskRunGroupRef]];ans.sMin_maskRunGroupRef.sMin;ans.fMin_ans.fOffset_maskRunGroupRef.fMin;ans.sSize_runGroup.sSize;ans.fSize_fSize;RETURN[ans]};maskRectangle=>{ans:CommandBuffer.maskRectangle;maskRectangle:PDFileFormat.MaskRectangle;ReadBlock[handle,@maskRectangle,SIZE[PDFileFormat.MaskRectangle]];CheckBB[handle,maskRectangle.sMin,maskRectangle.fMin,maskRectangle.sSize,maskRectangle.fSize,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskRectangle]];ans.sMin_maskRectangle.sMin;ans.fMin_maskRectangle.fMin;ans.sSize_maskRectangle.sSize;ans.fSize_maskRectangle.fSize;RETURN[ans]};maskTrapezoid=>{ans:CommandBuffer.maskTrapezoid;maskTrapezoid:PDFileFormat.MaskTrapezoid;fMin,fMax:INT;ReadBlock[handle,@maskTrapezoid,SIZE[PDFileFormat.MaskTrapezoid]];fMin_MIN[maskTrapezoid.fMin,maskTrapezoid.fMinLast];��qg/E�w_,8y_,�_,(w_, N�!]8y]�]w]#�%a[8$yZ6 wZ6�Z6X8&&�'V8%�'-U?8#W�$yS8wS$�&3�y'hS�S(D�wS)3�yQ wQ�Q-_�.y9Q�Q:wPI y%PI�PI&nw(JPI�PI(N8�!R- �/L8 I�!$l�%1�3 <�yKS wKS�KSyI8wI�� y)I�I*�HIHwH�H_.0y<H�H<wF\y'F\�F\(w*[F\�F\*yDIDw ]D�D ' �(.�/y3[D�D4wD7!:�yC wC �C &5�( yAfIwAf y$pAf�Af%)wAf(5�)>�*�+�-?I�l"�y#?�?$w&c?�?&y>Iw >�><o8 !�#X:8$ 9  )4'y7y w7y�7yy-7y�7y.w0h7y�7y058� 4*8� 'n�(28� 08� ty/38w/3-8u+' w+ #5�*=8&(8 #!&8$y%G w%G�%G#8$ 1-! 'y P w P� Py- P� P.w0h P� P08� 8� Z8� 8� ty 8w c8u' w #7�8&m8 #A8 y!0�!w#;�8$y v w v� v 8�yB � Sw � ! .B���������������TVm$������������������������������������������7fMax_MAX[LONG[maskTrapezoid.fMin]+maskTrapezoid.fSize,LONG[maskTrapezoid.fMinLast]+maskTrapezoid.fSizeLast];CheckBB[handle,maskTrapezoid.sMin,fMin,maskTrapezoid.sSize,fMax-fMin,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskTrapezoid]];ans.sMin_maskTrapezoid.sMin;ans.fMin_maskTrapezoid.fMin;ans.fMinLast_maskTrapezoid.fMinLast;ans.sSize_maskTrapezoid.sSize;ans.fSize_maskTrapezoid.fSize;ans.fSizeLast_maskTrapezoid.fSizeLast;RETURN[ans]};maskRunGroup=>{ans:CommandBuffer.maskRunGroup;maskRunGroup:PDFileFormat.MaskRunGroup;runGroup:PDFileFormat.RunGroup;s:CARDINAL_0;runCount:INT_0;words:INT_0;fMin:CARDINAL_LAST[CARDINAL];fMax:CARDINAL_FIRST[CARDINAL];run:LONGPOINTERTOPDFileFormat.Run;ReadBlock[handle,@maskRunGroup,SIZE[PDFileFormat.MaskRunGroup]];ReadBlock[handle,@runGroup,SIZE[PDFileFormat.RunGroup]];run_private.bufferOriginPointer;private.bufferWordCount_0;WHILEs<runGroup.sSizeDOIFrunCount*SIZE[PDFileFormat.Run]>=private.bufferWordCountTHEN{Readachunk,assumingonerungroupperscanline.words:CARDINAL_(runGroup.sSize-s)*SIZE[PDFileFormat.Run];IFwords+private.bufferWordCount>private.bufferWordsAllocatedTHENRaisePDError[handle,runGroupTooLong,private.bufferWordCount];ReadBlock[handle,run,words];private.bufferWordCount_private.bufferWordCount+words;};IFrun.fMin<fMinTHENfMin_run.fMin;IFLONG[run.fMin]+run.fSize>fMaxTHENfMax_LONG[run.fMin]+run.fSize;IFrun.lastRunTHENs_s+1;runCount_runCount+1;run_run+SIZE[PDFileFormat.Run];ENDLOOP;IFrunCount*SIZE[PDFileFormat.Run]#private.bufferWordCountTHENERROR;ans.runCount_runCount;ans.loadAddress_-1;���qg/E�w_,8�yn_,�_,w!'_,�y_,!w$_,�_,%Y2�4y] ww]�]-�/[8$ 1MZ6 '9 yX wX�Xy-X�X.w0hX�X0V8� U?8� S8 !}�# Q8� PI8� tN8 !g�"yL8wLKR8uI' wI #�H8& y&0H�wH&v F\8 #D8 ?C 8yC �C wC !u�#Ae8yAe�Ae gwAe"�$?8y?�?(w? N�!>8y.>�>w>#�y%v>�>&0w([>�y>(w.>�>/X�<n8y[<n�<n%w<n$�y%<n�<n&\w(<n�y<n)Uw/<n�<n/�:8yG:�:�: 8:%w:'98$ y7x w7x�7x58$ y-75�5-w/5�504)8�[28(�*y08w0�� y)0�0*�/2Iw/2y#h/2�/2$w%/2�/2&F2-y+-�-,w-/�x+Z �" &,e.1w5M7:w*<Zy!*<�*<"w*<(�(-y*(�(*w,(�(,y&Zw&#�$4�%F-y0]%F�%F1w%F4"#-*!Z), OZ-�.>^�-�ZyYIwY"�$ y'Y�Y(BwY+N.�0XyIw ]� ' �(.�/y3�4Vw7c; �y w � &5�( ybIwb y$pb�b%)wb(5�)>�*�+�-I!�#!)m�+RI�l"�y#�$w&c�&ylIw l�ly8wy!W�!w#�$50� y)�*-w1� u8 !�#X 8#W�$���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8IFrunCount=0THEN{ans.pointer_NIL;RaisePDWarning[handle,emptyRunGroup,SIZE[PDFileFormat.MaskRunGroup]+SIZE[PDFileFormat.RunGroup]];fMin_fMax;}ELSE{ans.pointer_private.bufferOriginPointer;CheckBB[handle,maskRunGroup.sMin,fMin,runGroup.sSize,fMax-fMin,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskRunGroup]+private.bufferWordCount]};ans.sMin_maskRunGroup.sMin;ans.fMin_fMin;ans.fOffset_0;ans.sSize_runGroup.sSize;ans.fSize_fMax;RETURN[ans];};maskSamples=>{ans:CommandBuffer.maskSamples;maskSamples:PDFileFormat.MaskSamples;samples:PDFileFormat.SampleArray;ReadBlock[handle,@maskSamples,SIZE[PDFileFormat.MaskSamples]];ReadBlock[handle,@samples,SIZE[PDFileFormat.SampleArray]];CheckBB[handle,maskSamples.sMin,maskSamples.fMin,samples.sSize,samples.fSize,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskSamples]+SIZE[PDFileFormat.SampleArray]];ans.loadAddress_-1;{raster:BlockDescription_ReadLocate[handle,Inline.LongMult[samples.sSize,(samples.fSize+(bitsPerWord-1))/bitsPerWord]];ans.samples_PDInterpBitmap.Reshape[raster.pointer,raster.words,[maskSamples.sMin,maskSamples.fMin,samples.sSize,samples.fSize]!PDInterpBitmap.InsufficientSpace=>{RaisePDError[handle,bitmapTooBig,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskSamples]+SIZE[PDFileFormat.SampleArray]];ERROR}];};RETURN[ans];};colorSamples=>{ans:CommandBuffer.colorSamples;��qg/E�y_,8w_,!+�#�y$D_,�_,$w_,( �]I "Z�y#]�]$w%]�][I* yZ6wZ6�Z6y3Z6�Z64&w6Z6�Z66fXI� SVI�yU?8wU?�SI "Z�#QI&37PI yNwN�Ny/N�N0w2yN�N23LIKR8� I8� H8 �!F\8� D8� tyC 8wC Ae8u?' w?"7�>8&<o8 ".:89 8$ y7x w7x�7x58$y+5�5,uw.Q5�5.4)8$ 0:2 " y0 w0�0y-0�0.w0h0�00yC0�0DTwF00�0F/38#W�$-8,+I� *=Z(Z&-,%FZ#I "�$I!Z PZ Z)6 - YZ�X3W5�k- y >w" � #y4  � 4w6 � 6yI � JwLc � Lyckwk�ZlIy8w8u v' w v"-� 8&�������:��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������9colorSamples:PDFileFormat.ColorSamples;samples:PDFileFormat.SampleArray;ReadBlock[handle,@colorSamples,SIZE[PDFileFormat.ColorSamples]];ReadBlock[handle,@samples,SIZE[PDFileFormat.SampleArray]];CheckBB[handle,colorSamples.sMin,colorSamples.fMin,samples.sSize,samples.fSize,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.ColorSamples]+SIZE[PDFileFormat.SampleArray]];{raster:BlockDescription_ReadLocate[handle,Inline.LongMult[samples.sSize,(samples.fSize+(bitsPerWord-1))/bitsPerWord]];ans.samples_PDInterpBitmap.Reshape[raster.pointer,raster.words,[colorSamples.sMin,colorSamples.fMin,samples.sSize,samples.fSize]!PDInterpBitmap.InsufficientSpace=>{RaisePDError[handle,bitmapTooBig,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.MaskSamples]+SIZE[PDFileFormat.SampleArray]];ERROR}];};RETURN[ans];};ENDCASE=>{RaisePDError[handle,unrecognisedImagingCommand,SIZE[PDFileFormat.Command]];ERROR};};controlCommand:PDFileFormat.Command.control=>{ans:CommandBuffer.stateChange;ans.loadChangeStart_ans.loadChangeLength_0;IFhandle.colorType=noneTHENSELECTcontrolCommand.comFROMstartImage,deviceCommand,storeLoad,endDocument=>NULL;ENDCASE=>{RaisePDError[handle,missingStartImage,SIZE[PDFileFormat.Command]];ERROR};SELECTcontrolCommand.comFROMstartImage=>{startImage:PDFileFormat.StartImage;ReadBlock[handle,@startImage,SIZE[PDFileFormat.StartImage]];IFstartImage.filler#0THEN{RaisePDWarning[handle,nonZeroFill,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.StartImage]];};IF(LONG[startImage.passBands]+startImage.nBands)*handle.sSizeBand��qg/E�w_,8 "]8[8$ yZ6 wZ6�Z6X8$y+X�X,uw.QX�X.V8$ 0$U? " yS wS�Sy-S�S.w0hS�S0yCS�SDtwFQS�SFQ8,PII� NZLZKS-,IZHI "�$IF\ZDZ C Z)5 Af- ?Z�X3W5�>k- y<o >w"<o�<o#y4 <o�<o4w6<o�<o6yI<o�<oJwLc<o�<oLy:kw9 k�7yZ5Iy4*8w4*28y0'w0)�/38&y- w-�-y--�-.w1-�-2�+u*= w-*=�*=+2u5 �(&!�#N1e�2y%Fw%F!�#}y&%F�%F'*w%F/ny=7%F�%F=w#' 8 ) / 8y;f#�#<Nw>#�#y!'w!)� P8&y w�y8wY8ywy'�(ku ' w � �c8 j8$ y-c�.w/�0Ay8w$�&�y'�(w+�lI* yw�y/�0w2y�2Iy v8w  �y � =w � S9���������������TVm$/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������10>=handle.herald.imageSSize+handle.sSizeBandORLONG[startImage.fMinPage]+startImage.fSizePage>handle.herald.imageFSizeTHEN{RaisePDWarning[handle,imageBoundsExceedPageBounds,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.StartImage]];};IFhandle.colorType#noneANDhandle.bandNumber<handle.image.nBandsTHENRaisePDWarning[handle,tooFewBands,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.StartImage]];handle.image_startImage;ans.whatChanged_imageStart;handle.priority_0;handle.colorType_ink;handle.bandNumber_0;handle.sMinBand_startImage.passBands*handle.sSizeBand;IFNOTstartImage.stripTHEN{handle.pass_handle.pass+1};IFstartImage.feedTHEN{handle.page_handle.page+1;handle.pass_1};handle.status_constructingImage;RETURN[ans]};setPriority=>{priorityLow:PDFileFormat.Priority;priority:Environment.LongNumber;ReadBlock[handle,@priorityLow,SIZE[PDFileFormat.Priority]];priority.highbits_controlCommand.rest;priority.lowbits_priorityLow;handle.priority_priority.li;ans.whatChanged_priorityChange;RETURN[ans]};setColorInk=>{handle.colorType_ink;ans.whatChanged_colorChange;RETURN[ans]};setColorClear=>{handle.colorType_clear;ans.whatChanged_colorChange;RETURN[ans]};setColorTile=>{setColorTile:PDFileFormat.SetColorTile;ReadBlock[handle,@setColorTile,SIZE[PDFileFormat.SetColorTile]];handle.colorTileLoadAddress_setColorTile.addr;SELECTcontrolCommand.restFROM0=>handle.colorType_opaqueTile;1=>handle.colorType_transparentTile;ENDCASE=>{handle.colorType_opaqueTile;���qg/Ew_, )y]8]lw]�]<):�[ y)[�[*w[-�Z6I*yXwX�Xy/X�X0w2yX�X2VIyU?8wU?%�'y+U?�U?+wU?.8;�S y'.S�S'wQI* yPIwPI�PIy/PI�PI0w2yPI�PI2N8 !�#+ L8$*�% KS8"�$I8$�%H8&�'F\8$5�%&yD8DwDy'D�D(MwD+Y 3]�4 <=�>"yC 8wC y${C �C %4wC (@ 0�2 9�;Af !^�"?8 !i�"y>8w><o8u:' w: �9 8 !F7y858$ y.?5�5.w05�514)8#C�$28"�$J 08"�$ /38$*�%y-8w-+8u*<' w*<!:�(8$�%&8$*�% y%F8w%F#8u!' w!"p� O8$�%8$*�% y�8w�Y8u' w !� 8 !}b8$ y w�8+:�,yl8wl y+ql�l,*wI�~)�+| I�~)�+|y uIw u!K#� Z(6�) ���������������TVm$����������������������11RaisePDWarning[handle,unknownColorTileFlag,SIZE[PDFileFormat.Command]];};ans.whatChanged_colorChange;RETURN[ans];};endBand=>{handle.priority_LAST[INT];ans.whatChanged_priorityChange;RETURN[ans];};endDocument=>{ans.whatChanged_documentEnd;handle.status_transmissionComplete;RETURN[ans];};storeLoad=>{storeLoad:PDFileFormat.StoreLoad;loadWordsAllocated:LONGCARDINAL_private.loadWordsAllocated;ReadBlock[handle,@storeLoad,SIZE[PDFileFormat.StoreLoad]];IFstoreLoad.firstAddress>loadWordsAllocatedORstoreLoad.firstAddress+storeLoad.wordCount>loadWordsAllocatedORstoreLoad.firstAddress+storeLoad.wordCount>handle.herald.maxLoadWordTHEN{RaisePDError[handle,loadOutOfBounds,SIZE[PDFileFormat.Command]+SIZE[PDFileFormat.StoreLoad]];ERROR};ReadBlock[handle,private.loadPointer+storeLoad.firstAddress,storeLoad.wordCount];ans.whatChanged_loadChange;ans.loadChangeStart_storeLoad.firstAddress;ans.loadChangeLength_storeLoad.wordCount;handle.loadWords_MAX[handle.loadWords,ans.loadChangeStart+ans.loadChangeLength];handle.colorTileLoadAddress_-1;RETURN[ans];};deviceCommand=>{deviceCommand:CommandBuffer.deviceCommand;wordCount:CARDINAL;block:BlockDescription;ReadBlock[handle,@wordCount,SIZE[CARDINAL]];block_ReadLocate[handle,wordCount];IFblock.words<wordCountTHENRaisePDError[handle,unexpectedEOF,block.words+SIZE[CARDINAL]];deviceCommand.deviceCommandPointer_block.pointer;deviceCommand.deviceCommandWords_block.words;RETURN[deviceCommand];};ENDCASE=>{RaisePDError[handle,unrecognisedControlCommand,��qg/Ew_,Z,y]-w ]�]! [ZZ68$*�% yX8wXV8uU?'wU?`�S8"�y$S�S$w&S�yS'[w)gS�S)�Q8$*�%yPI8wPIN8uL' wL"n�KR8$*�% I8 !i�"yH8wHF[8uD'wD 2�C 8 Ae8y&QAe�Ae' Ae*BwAe0�? >8$ y->�>-w/>�>/y<o8w<o(�)y:8w:l)L�+18�9  y7x8w7xl)L�+18�5 y+5�5,w4)I)y2w2�2y/2�20w2y2�22y0w -0�0 �/38$+- +8$*�% *=8%�'p(8'O�(&8$�y&&�&'+w(&�&)64%F �#8+:�,y!8w! P8u' w!;#�8 $5Y8 y Y�Y!w'&Y�Y8q 8$ y- � .w0c �y 0w6 � 7`c8�* y8w "�#y*�+w. $ y- �-w/�y/w6!�6l8"2b�3 81�3 y8w v8y 'w ). ���������������TVm$(������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������12SIZE[PDFileFormat.Command]];ERROR};};ENDCASE=>{RaisePDError[handle,unrecognisedCommandType,SIZE[PDFileFormat.Command]];ERROR};};Error:PUBLICERROR[handle:Handle,code:PDInterpBasic.PDErrorCode,wordIndex,wordCount:INT]=CODE;Warning:PUBLICSIGNAL[handle:Handle,code:PDInterpBasic.PDWarningCode,wordIndex,wordCount:INT]=CODE;RaisePDError:PROC[handle:Handle,code:PDInterpBasic.PDErrorCode,words:INT]={handle.status_code;ERRORError[handle,code,handle.index-words,words];};RaisePDWarning:PROC[handle:Handle,code:PDInterpBasic.PDWarningCode,words:INT]={handle.warningCount_handle.warningCount+1;handle.status_code;SIGNALWarning[handle,code,handle.index-words,words];};END.��qg/Ey_,wu_,�_,y+_,�_,,w/_,�_,0�]y[w[)yZ6wRZ6�Z6y'Z6�Z6(sw+Z6�Z6,{�XuU@wU@�U@yU@�U@U@wU@]!&*S  yS�Sw S�S!�y#S�S$Ww&S�SuPJwPJ�PJyPJ�PJPJwPJ$ )C-N  yN�Nw N�N!�y#N�N$Ww&N�NuKT wRKT�KTyPKT�KTwKT![&*S<wyIwI�I��H $�yF^wF^ !.DuAh wBAh�Ahy?Ah�AhwAh#J(,B?y;?�?wG?�?.��>O�-8�/<r $�y:w: Q#0o9#y5wi5�5���������������TVm$y��������������������������������������������������������������������������������������������������������������������PDInterpSysCalls.mesaCopyright(C)1983,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,19849:54:25amPDTPDInterpSysCalls:DEFINITIONS=BEGINSetDisplayLights:PROC[value:[0..9999]];WriteLine:PROC[string:LONGSTRING];AllocateSpace:PROC[words:INT]RETURNS[LONGPOINTER];FreeSpace:PROC[pointer:LONGPOINTER];BadFreeSpaceRequest:ERROR;END.��x_,]/BZ '* -[$ -#s(\*wXydX�XJ wX"�y$iX�X%"uU@w U@�U@y U@�U@wU@"6 uQwQ�QyQ�QwQyKQ�QQ"<w&Q�Q' �uN wSN�NyQN�NwNy N�N!Kw"N�Ny#N�N$wN)�y*CN�N*N.4w3QN�N3�uKTwKT�KTyKT�KTwKTy`KT�KT KT#Qw(mKT�KT(�uHw'H�Hy$H�Hw!6H�HyDwiD�D�������P��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������PDInterpSysCallsDevelImpl.mesaMichaelPlass,November30,198310:21amDIRECTORYEnvironment,Space,PDInterpSysCalls,ProcessorFace;PDInterpSysCallsDevelImpl:MONITORIMPORTSSpace,ProcessorFaceEXPORTSPDInterpSysCalls=BEGINSetDisplayLights:PUBLICPROC[value:[0..9999]]={ProcessorFace.SetMP[value]};AllocateSpace:PUBLICENTRYPROC[words:INT]RETURNS[LONGPOINTER]={ENABLEUNWIND=>NULL;pages:CARDINAL_(words+Environment.wordsPerPage)/Environment.wordsPerPage;RETURN[Space.ScratchMap[pages]]};FreeSpace:PUBLICENTRYPROC[pointer:LONGPOINTER]={ENABLEUNWIND=>NULL;[]_Space.Unmap[pointer];};BadFreeSpaceRequest:PUBLICERROR=CODE;END.��x_,]$g #'y[w[K #D. Z6y Z6�Z6!XwX yVwVU@�yU@�U@uQw Q�Qy Q�QQwQ"i& ,�.uN wSN�NyQN�NN N!wN%7y* N�N*w,,N�Ny-N�N-wN3�y3N�N4;N7sw<N�N=w�?\�yLLwLyRL�L;w!L�LKTy7KT�KTwKT�I:yHwH`F^uCwC�CyC�CCCRwC"y(C�C)XC,w1C�C2�4y�yAhAhwAhyRAh�Ah;w!Ah�Ah?>�>:y3:�::!w:&�y(f:�:)1w+:�:y7|wi7|�7|�������^��������TVm$q����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDQueue.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September13,19849:07:25amPDTPDQueue:DEFINITIONS=BEGINThismodulemanagesthequeueforthepeachprinter.Ifadiskisavailable,asimplemechanismisprovidedhereforperiodicallysavingthestateofthequeueonthedisk,sobootingtheserverwillnotloseitall.Inanycase,thequeuelivesinmainmemory,andconsistsmostlyoffullpathnamesofthefiles,togetherwithalittlebitofinformationaboutwhorequestedtheprint,etc.Thereisalsosomestuffhereforloggingwhathasbeengoingon,andforaccessingthelog.Request:TYPE=RECORD[fileName:LONGSTRING,i.e.,"[Indigo]<platemaker>foo.pd!33".requestTime:LONGSTRING,requestor:LONGSTRING,requestorPassword:LONGSTRING,separator:LONGSTRING,Tobeprintedbetweenjobs,ifpossible.copies:CARDINAL];Reset:PROC;Resetsthequeue.QueueRequest:PROC[request:Request]RETURNS[requestNumber:INT];Returns-1ifthequeueisfull.Reprint:PROC[copies:CARDINAL];DoRequest:PROC[action:PROC[request:Request,requestNumber:CARDINAL,abort:LONGPOINTERTOBOOLEAN]];Waitsifqueueisempty;actionshouldreturnorraiseABORTEDifabort^becomestrue.IfthestringsintheRequestareNIL,therequestistoreprintasmuchasthepreviousrequestasispossiblewithoutalotofrecomputation.CheckRequest:PROC[requestNumber:CARDINAL,action:PROC[request:Request,status:RequestStatus]];RequestStatus:TYPE={notFound,canceled,waiting,printing};CancelRequest:PROC[requestNumber:CARDINAL]RETURNS[ok:BOOLEAN];Looksforamatchingrequest(fileNameandrequestor),andremovesitfromthequeue.CountRequests:PROCRETURNS[requestCount:NAT];Numberofoutstandingrequests.EnumerateRequests:PROC[action:PROC[requestNumber:CARDINAL,request:Request,status:RequestStatus]RETURNS[continue:BOOLEAN]];���x_: ]/BZ '* -[$ $$) +WwXyX�X wX�yX�X {xVB $r&(,23�479 ?�UM[#&( 04869;\=SA"%(*-/136T9;QqZ!&+4,/M2_68+:wPW�3\ d" )Y-/58+;NK ^#Y%*K-0 33695;MwIyI�IwI7�yI�IwI!�Hy~H�H8How!H�HxFjwD ylD�D%D]w#D�DC yC�CKCw!C�CAtyAt�AtAt#w'sAt�At? yp?�?)?aw!?�?x>$2"%'-w<}y<}�<}ww:u7wD7�7yB7�7we7�7x55u2 w2�2y2�26w26#y)2�2*ww2/y:d2�2:w<o2�2<�x0e!I"u-wb-�-y`-�-w-y-�-w%I-�-%�u*Jw*J�*Jy}*J�*J$w*J$y!*J�*J!w*J$*q0" y:t*J�*J;?w@*J�*J(y(�(((p(!w'*(�('x&H+" &*c.w00}3k&�&46x&9|:%T'#2$$=}&#�#'mx(#�#)+0t1379=V?"s %*�+-/ u we�yb� w y(�)w.�/y4d�5 w8 wg ylg�g%wg�! )8/+4V u w�y�bway)�)w/M�y05�1 w6@y9�9w>�?�xp(O� i% +K- 478<\=#uz wz�zyz�zzwz$ y-z�z.w0iz�z0�x> !)u w � y � Ow !Ny&C � &w )y4 � 5jw: � ; w y% � %w +% y1 � 2`w7G � 7�������s��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2RegisterDisk:PROC[read,write:PROC[address:LONGPOINTER,nwords:CARDINAL],maxWords:CARDINAL];Periodicallycallsthewriteproc;callsthereadprocatstartuptime.Ifthisisnevercalled,thequeuelivesonlyinmainmemoryandislostatboottime.RegisterTTY:PROC[writeLine:PROC[LONGSTRING]];Registersaprocfordisplayingmessages.GetSuspended:PROCRETURNS[BOOLEAN];SetSuspended:PROC[suspended:BOOLEAN]RETURNS[old:BOOLEAN];SettingsuspendedtoTRUEwillstopprintingafterthecurrentjobfinishes.LogMessage:PROC[message:LONGSTRING,requestNumber:INT_-1,userName:LONGSTRING_NIL];Addstimestamp.Messageisalsooutputtotheprinter'sTTY,ifpresentandenabled.SetLogState:PROC[logging:BOOLEAN]RETURNS[old:BOOLEAN];SettingloggingtoFALSEpreventsmessagesfrombeingloggedontheTTY,topreventinterferencewithtypein.Unprintedmessageswillbeprintedwhenloggingisre-enabled.EnumerateMessages:PROC[PROC[message:LONGSTRING]RETURNS[continue:BOOLEAN]];Replayshistoryforasfarbackaswecanremember.END.��qg/E�u^ w^�^y^�^Cw^B!y%^�^%w^(y.}^�^/6^2mw7^�^8fy\w\�\`�=y \�\!pw&\�\'?�x[H m#2&),/238M<2=@YYo!$')~,2468:P=VuVR wVR�VRyVR�VR\wVR\ y$lVR�VR%wVR(�y(wVR�VR)0VR,gw0VR�VR17xT�- %uQ\ wdQ\�Q\yaQ\�Q\ Q\wQ\$�y$wQ\�Q\%0w*Q\�Q\*{�uO w-O�Oy*O�OwO y%hO�O&!w+O�Oy+O�O,wO1y5BO�O5w:O�O;E�xN }N �N _xN #M%(-1 3X8:NuJ wqJ�JyoJ�JwJy#JJ�J$J';w+J�J, y6J�J7@wJ9f�:IyI�IIwI!�y#?I�I$'w%JI�I%�xGpkt@#%#',/-0 }5fGp�Gp6x7Gp�Gp89>xEuBz wgBz�BzydBz�Bz wBz y"Bz�Bz#w(fBz�Bzy)MBz�Bz*!wBz/Yy2Bz�Bz3Xw8?Bz�Bz8�x@}}"@�@x@"W'-Q0408t:g}<@�@=mx>@�@??+ "'.)36|8K<= u:5w:5�:5y:5�:5w:5!�y":5�:5"w%B:5�:5%y+v:5�:5,/:5/gw3:5�:5y4:5�:55w:5: y8wf8�8x6 b"%'),y3w{3�3���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������PDQueueImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September27,19847:29:39amPDTDIRECTORYTime,Checksum,Environment,Inline,PDInterpSysCalls,PDQueue,String;PDQueueImpl:MONITORIMPORTSTime,Checksum,Inline,PDInterpSysCalls,StringEXPORTSPDQueue=BEGINRequest:TYPE=PDQueue.Request;readProc:PROC[address:LONGPOINTER,nwords:CARDINAL]_NIL;writeProc:PROC[address:LONGPOINTER,nwords:CARDINAL]_NIL;maxStateWords:CARDINAL_16*1024;deferSaving:BOOLEAN_FALSE;state:LONGPOINTERTOStringSeqRep_NIL;messages:LONGPOINTERTOStringSeqRep_NIL;StringSeqRep:TYPE=MACHINEDEPENDENTRECORD[nStrings:CARDINAL,end:CARDINAL,mark:CARDINAL,nMarked:CARDINAL,nDiscarded:CARDINAL_0,check:CARDINAL,nWords:CARDINAL,stringSpace:SEQUENCECOMPUTEDCARDINALOFWORD];StringRep:TYPE=RECORD[nChars:CARDINAL,char:PACKEDARRAY[0..0)OFCHAR];Validate:INTERNALPROC[s:LONGPOINTERTOStringSeqRep]RETURNS[ok:BOOLEAN]={nStrings:CARDINAL_0;nMarked:CARDINAL_0;offset:CARDINAL_0;IFs.check#CalculateCheck[s]THENRETURN[FALSE];IFs.mark>s.endTHENRETURN[FALSE];WHILEoffset<s.endDOwords:CARDINAL;nStrings_nStrings+1;IFoffset>s.markANDnMarked=0THENRETURN[FALSE];IFoffset>=s.markTHENnMarked_nMarked+1;���x_,]/BZ '* -[$ $$) +WyXwXKA!S ).U9VS yS�SQwQ!&1fyPHwPHN�yN�NwKRyKR�KR�wKR�KRry!~KR�wKR!Hy3H�HwHy H�H!ZH$w)H�H*y/H�H0w6H�H6�y8H�H9kw:H�HD yD�D>wD=y!D�D!D$w*D�D*y0:D�D1w6qD�D7Y�y8D�D9w:D�DAe yKAe�AewAe"�#> y>�>w>�y >�>!bw$G>�><ny<n�<nW<n<n/w<n I ) �y*<n�<n+w,<n�<n:yH:�::9: w:" +�y-B:�:.*w/M:�:7w y.7w�7ww7w�y7w�7w 7w%7w-Ww7w2�5y5�5w5�54(y54(�4(�wl4(�4(2y2�2wH2�20yp0�0;w0�0/2 y/2�/2w/2!�#-y_-�-*w-�-+y+�+w+�+*; y*;�*;f*;!(*;/N*;1hw(%D y%D�%Dw%Dl�yQ%D�%D%w%D"�#y;#�#wr#�#!y!�!5!w! y#!�!$�!&w Nuw�y�Dlw!y"�#&,w. y7�8w=yWwfW�WN�3�y�w�!)yp�;w +�!ayIa�awa�ywi�Ny&b�'*(w/�y/�0w3�3�yw�Oy�!w'�y'w�(0w+�+x�yjwje0�eyj�j �wy�gw�y�!i�#Ny sw s�y + s� s w s#Q)C�+(�y,] s� s- s0#w s5�y5 s� s6w9 s� s9�y w y! � "Ew %Q+D�,2�4���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2words_(s[offset]+Environment.bytesPerWord-1)/Environment.bytesPerWord+1;offset_offset+words;ENDLOOP;IFoffset#s.endTHENRETURN[FALSE];IFnStrings#s.nStringsTHENRETURN[FALSE];IFnMarked#s.nMarkedTHENRETURN[FALSE];RETURN[TRUE]};DiscardMessages:INTERNALPROC[maxWords:CARDINAL]={WHILEmessages.end>maxWordsDODiscard[messages,1]ENDLOOP;};Discard:INTERNALPROC[s:LONGPOINTERTOStringSeqRep,n:CARDINAL]={newStart:CARDINAL_StringOffset[s,n];Inline.LongCOPY[from:@(s[newStart]),nwords:s.end-newStart,to:@(s[0])];s.nStrings_s.nStrings-n;s.end_s.mark_s.end-newStart;s.nDiscarded_s.nDiscarded+n;};StringOffset:INTERNALPROC[s:LONGPOINTERTOStringSeqRep,n:CARDINAL]RETURNS[offset:CARDINAL]={offset_0;IFn=0THENRETURN;IFn>s.nStringsTHENERROR;FORi:NATIN[0..n)DOoffset_NextStringOffset[s,offset];ENDLOOP;};NextStringOffset:INTERNALPROC[s:LONGPOINTERTOStringSeqRep,offset:CARDINAL]RETURNS[CARDINAL]=INLINE{IFoffset>=s.endTHENERRORELSE{words:CARDINAL_(s[offset]+Environment.bytesPerWord-1)/Environment.bytesPerWord+1;IFwords>s.end-offsetTHENERROR;offset_offset+words;RETURN[offset];};};Append:INTERNALPROC[s:LONGPOINTERTOStringSeqRep,string:LONGSTRING]={body:LONGPOINTERTOStringRep;chars:CARDINAL_IFstring=NILTHEN0ELSEstring.length;words:CARDINAL_(string.length+Environment.bytesPerWord-1)/Environment.bytesPerWord+1;��qg/E�w_,"�]B[�m8� yZ6wZ6�Z6yXwXv�\yX�XX!wX' �y'X�X(=w+"X�X+�yVwV� y"3V�V"V%wV+e�y+V�V,w/fV�V/�yU?wU?�y#QU?�U?$ U?'wU?,�y,U?�U?-w0U?�U?0�ySwSq�yS�Sw�S�SQuNw>N�Ny;N�NN"wN&u y.AN�N/ w4wN�N5_�7D�yLwLe �!�y'L�L(�wL*65_y6L�L7w<L�LKRuHwH�HyH�HHwH y"H�H#YH&H,1wH.K 7dy9)H�H9w?_H�HF\��Dy:D�DwD�!*yC "!+1!:Ae? C� !�" >�$� <o *� $�&:u7x wF7x�7xyC7x�7x7xw7x#}y%b7x�7x&7x)R7x.w7x1 :'y5w5�5y5�5w5y#5�5$bw)5�5*�,�4)�\y2w2���y2�22w!2�2y0w0��+ yj0�0#0!0w%A0�0y/3w/3yS/3�/3;/3Lw/3#y/3�/3 �w-�m&Ky+w+�+*<u&w3&�&y1&�&&"w&&jy(O&�&)&,@&1w&3 =y%Fw%F�%Fy%F�%Fw%F�yS%F�%F w%%F�%F&q�y(V%F�%F(w%F,�y#w#v y#�#X#"d!w!S� Oy O� Ogw O W�By�w�� y#Q���$ �'w+(���Y�m8� yw buwX�yU�w y"t�#-&d,w. 79y;�<Alw3l�l��y� w" y�w�yZ��w!$�y&�')Lw-�y.F�.w1 uy u� uUw uF� F������� ��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3IFs.mark#s.endTHENERROR;IFs.end+words>s.nWordsTHENERROR;body_LOOPHOLE[@(s[s.end])];body.nChars_chars;FORi:NATIN[0..chars)DObody.char[i]_string[i];ENDLOOP;IFcharsMOD2=1THENbody.char[chars]_'\000;s.mark_s.end_s.end+words;s.nStrings_s.nStrings+1;};AppendToString:INTERNALPROC[string:LONGSTRING,s:LONGPOINTERTOStringSeqRep,offset:CARDINAL]={body:LONGPOINTERTOStringRep;IFoffset>=s.endTHENERROR;IFoffset+(s[offset]+Environment.bytesPerWord-1)/Environment.bytesPerWord+1>s.endTHENERROR;body_LOOPHOLE[@(s[offset])];FORi:NATIN[0..body.nChars)DOstring[string.length]_body.char[i];string.length_string.length+1;ENDLOOP;};MoveToString:INTERNALPROC[string:LONGSTRING,s:LONGPOINTERTOStringSeqRep,offset:CARDINAL]={string.length_0;AppendToString[string,s,offset];};GetNumberDiscardedMessages:ENTRYPROCRETURNS[CARDINAL]={IFmessages=NILTHENRestore[];RETURN[messages.nDiscarded];};GetString:ENTRYPROC[string:LONGSTRING,s:LONGPOINTERTOStringSeqRep,n:CARDINAL]RETURNS[ok:BOOLEAN]={string.length_0;IFn<s.nDiscardedTHENRETURN[TRUE];IFn-s.nDiscarded>=s.nStringsTHENRETURN[FALSE];AppendToString[string,s,StringOffset[s,n-s.nDiscarded]];RETURN[TRUE];};MoveMarkedStrings:INTERNALPROC[from,to:LONGPOINTERTOStringSeqRep]={nwords:CARDINAL_from.end-from.mark;IFto.nWords<to.mark+nwordsTHENERROR;to.nStrings_to.nStrings-to.nMarked;to.nMarked_0;���qg/E�y_,w_,��y_,�_,L_,"Xw&i_,�_,y]w] (�]y$o]�]%(](4w,F]�][�y[�[w^[�[ Z5 �yXwXySX�X;XLwX# y!X�X"�wV �- yU?wU?�U?ySwSy@S�SQwS���yS�S wS#-�/pQs��� PH C� !�"NuKR wKR�KRyKR�KRKR"?wKR%y*KR�KR+RKR.w2KR�KR3y5TKR�KR6KR9EKR>wI y$I�Iw%[I�I&B�('�HyH�HHH wH" yF[wF[v yF[�F[XF["dw&vF[�F[yDwC HAe� yAe�AeXAedw vAe�Ae?�y?�?w^?�? y>w>yS>�>;>Lw>#y&m>�>'S�w<n!�" : � &h�(My9w9�97xu4) w4)�4)y4)�4)4)!7w4)$y)4)�4)*I4)-w14)�4)2y4L4)�4)54)8=4)=w2 y$2�2w%[2�2&B�('�0 �t/2!"-u*<w#*<�*<y$*<�*<%9*<)*<,w*<2�y3*<�*<3w9S*<�*<:;�< �y(w(�yl(�(U(w(" y&w&q%Eu!w!�!y!�!!Rw!y$!�!%e!(w- !�!-y/h!�!0!!3X!8w O y O� Oow" O� Oy# O� O$w O)y, O� O-^w2E O� O3-�5� �tyw��+ yP� #w(�y(�)w,�,t�yXwX  y&X�X'X*wX0�y0zX�X14w4X�X4|�!"+y w q�y � w� � c�auw.�y+�$w(e,y.�/h28@wk ��yQ�w � ywd� y']�(+"w/4� t �v "[�#Y  x��������#��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4to.end_to.mark;Inline.LongCOPY[from:@(from[from.mark]),nwords:nwords,to:@(to[to.mark])];to.nStrings_to.nStrings+from.nMarked;to.nMarked_from.nMarked;to.end_to.end+nwords;to.nStrings_to.nStrings+from.nMarked;from.nStrings_from.nStrings-from.nMarked;from.nMarked_0;from.end_from.mark;};CalculateCheck:INTERNALPROC[s:LONGPOINTERTOStringSeqRep]RETURNS[CARDINAL]={cs:CARDINAL_Checksum.ComputeChecksum[nWords:5,p:s];cs_Checksum.ComputeChecksum[cs:cs,nWords:1,p:s+6];RETURN[cs];};Save:INTERNALPROC={IFstate=NILTHENERROR;DiscardMessages[state.nWords-state.end];MoveMarkedStrings[from:messages,to:state];state.check_CalculateCheck[state];IFNOTValidate[state]THENERROR;IFwriteProc#NILTHENwriteProc[state,SIZE[StringSeqRep[state.end]]];MoveMarkedStrings[from:state,to:messages];};Restore:INTERNALPROC={IFstate#NILTHENERROR;IFreadProc#NILTHEN{temp:LONGPOINTERTOStringSeqRep_PDInterpSysCalls.AllocateSpace[256];readProc[temp,256];IFtemp.check=CalculateCheck[temp]THEN{words:CARDINAL_SIZE[StringSeqRep[temp.end]];wordsAllocated:CARDINAL_MAX[maxStateWords,words+255]/256*256;IFwordsAllocated<=maxStateWordsTHEN{state_PDInterpSysCalls.AllocateSpace[wordsAllocated];readProc[state,words];state.nWords_wordsAllocated-SIZE[StringSeqRep[0]];IFValidate[state]THEN{AllocMessages[];MoveMarkedStrings[from:state,to:messages];}ELSE{PDInterpSysCalls.FreeSpace[state];state_NIL};};���qg/E�w_,=�]"!/C49[Z6 �v "[�$@ X x� V=��U? �v "[�$@ S �/Q 1�PH� NuKR wAKR�KRy?KR�KRKR!wKR%xy']KR�KR(KR+NKR0wKR3 yIwI�y5I�I�wlI�IS�!8�Hy!H�HwH�i57P9F\�5*,2445yDwDqC u?w?�?y?�?'?Pw?� �y>w>�y>�>>R> w$(>�><n(:#o)+9 �wy7x7xw7xy 7x�7x!H7x$Uw(f7x�7xy5w5�y5�55Jw5#y,5�5-@w/5�5/4)#o&) 2u/2w/2�/2y/2�/2/2w/2 �"�y-w-�y-�--R- w$(-�-y+w+r�yW+�+@+w+"�*<y*<�*<*< *<"w*<$ -�($& y%Ew%E �y-u%E�%E..w%E1:�#'y#�#xw#"h�y##�#$w&p#�#&!'y!R!�!"w!( �y)!�!*w,S!�!, Oy'w "% y.�/w2��8i�/X8"f8 !s�"y,�-Fw/"�/y 8w y# � $zw '�bII+/=1d I�yk8wk�I"Iz�y � w uI 8�������K��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5};PDInterpSysCalls.FreeSpace[temp];temp_NIL;};IFstate=NILTHENInternalReset[];};AllocMessages:INTERNALPROC={wordsAllocated:CARDINAL_SIZE[StringSeqRep[state.nWords]];IFmessages#NILTHEN{PDInterpSysCalls.FreeSpace[messages];messages_NIL};messages_PDInterpSysCalls.AllocateSpace[wordsAllocated];messages.nWords_wordsAllocated-SIZE[StringSeqRep[0]];messages.nStrings_messages.end_messages.mark_messages.nMarked_messages.nDiscarded_0;};InternalReset:INTERNALPROC={IFstate#NILTHEN{PDInterpSysCalls.FreeSpace[state];state_NIL};state_PDInterpSysCalls.AllocateSpace[maxStateWords];state.nWords_maxStateWords-SIZE[StringSeqRep[0]];state.nStrings_state.end_state.mark_state.nMarked_state.nDiscarded_0;AllocMessages[];};Reset:PUBLICENTRYPROC={InternalReset[]};newRequest:CONDITION;stringsPerRequest:CARDINAL=6;requestLimit:CARDINAL_1000;Requestsarenumberedmodulothisnumber.ReqNumberFromStringNumber:PROC[stringNumber:CARDINAL]RETURNS[requestNumber:CARDINAL]={requestNumber_(stringNumber/stringsPerRequest)MODrequestLimit;};DecodeCopies:PROC[tag:LONGSTRING]RETURNS[copies:CARDINAL]={copies_ORD[tag[2]]*256+ORD[tag[3]];};QueueRequest:PUBLICENTRYPROC[request:Request]RETURNS[requestNumber:INT]={ENABLEUNWIND=>NULL;tag:LONGSTRING_[4];IFstate=NILTHENRestore[];IFstate.nStrings>=stringsPerRequest*requestLimitTHENRETURN[-1];requestNumber_ReqNumberFromStringNumber[state.nStrings+state.nDiscarded];��qg/E�w_,']![�y,[�[w7[�[Z5yXwX�yX�XXRwX VuS wS�SyS�S/S!WwS$�&�Qy0Q�QwQ#�y%xQ�Q&w'Q�Q(VyPHwPH�ylPH�PHUPHwPH"&;N�ydN�NMwpN�N �L�m/KR�wy)KR�KR)w+KR�KR+I� ( �) 2�4e@�H �"\F\uC  wC �C yC �C ]C wC $,�&�yAewAe�yAe�AeAeRwAe #6>9o�y:Ae�Ae;w=Ae�Ae=�?5�.> ?� y&>�>'?w)>�>)~<o l�"�$A *�,e 5\�6:�d9 7xu4)wD4)�4)yB4)�4)4)fw4)"�#0 y/0�0w0�0-y-�-bw-#R�%7*< y*<�*<Rw*< B�!x(!&%(u%Ew#%E�%Ey$%E�%E%=w%E(= y1%E�%E2w8*%E�%Ey9%E�%E9w#y{#�#Fw"#�##�%�! �jy3!�!4w!6 Ou� wY���yW���w�y!$���!�%w)���y*h���+<w�0ty5���6Jw;���<�>�Y3�yY�YwVY�Y y#yY�Y$Vw&Y�Y&sub wb�byb�b6bGb#wb't-%y2b�b3wy{�w�n�!S�y)wy c�!Lw#�lyl�llwl� 5yw�y�Rw  yw y3�36w<L u � ;�������b��������TVm$2��������������������������������������������������������6String.AppendString[tag,""];String.AppendChar[tag,VAL[Inline.HighByte[CARDINAL[request.copies]]]];String.AppendChar[tag,VAL[Inline.LowByte[CARDINAL[request.copies]]]];Append[state,tag];Append[state,request.fileName];Append[state,request.requestTime];Append[state,request.requestor];Append[state,request.requestorPassword];Append[state,request.separator];IFstringsPerRequest#6THENERROR;BEGINmsg:LONGSTRING_[250];String.AppendString[msg,request.fileName];IFrequest.copies#1THEN{String.AppendString[msg,"("];String.AppendDecimal[msg,request.copies];String.AppendString[msg,"copies)"];};InternalLogMessage[msg,requestNumber,request.requestor];END;IFNOTdeferSavingTHENSave[];--savewillbedonewhencurrentrequestfinishes.NOTIFYnewRequest;};reprintCopies:CARDINAL_0;Reprint:PUBLICENTRYPROC[copies:CARDINAL]={reprintCopies_reprintCopies+copies;NOTIFYnewRequest;};printingSuspended:BOOLEAN_FALSE;GetSuspended:PUBLICENTRYPROCRETURNS[BOOLEAN]={RETURN[printingSuspended]};SetSuspended:PUBLICENTRYPROC[suspended:BOOLEAN]RETURNS[old:BOOLEAN]={old_printingSuspended;printingSuspended_suspended;NOTIFYnewRequest;};abortCurrent:BOOLEAN;FirstRequest:ENTRYPROCRETURNS[requestNumber:CARDINAL]={ENABLEUNWIND=>NULL;IFstate=NILTHENRestore[];requestNumber_ReqNumberFromStringNumber[state.nDiscarded];};FindRequest:ENTRYPROC[requestNumber:CARDINAL,tag:LONGSTRING,���qg/E�w_,"R�$ ]y!]�]"ww$]�]$fy.E]�]/w4{]�]4[y![�["ww$[�[$fy-[�[.w4"[�[4Z5 X V U? S Q yPHwPH�!�y"PH�PH#PH&w*PH�PHyNwLyrL�L+LbwL!S�"KR$yIwIy!I�I"]wI%i�H''�(BF['(nD''�(B C 'Ae$ .y?w?�?y>>w> y!J>�>"w>%x)>�>*�+ -02`59 <ny:w: 95 y 5�5w5 �"Su2wb2�2y`2�222w2#Fy(Q2�2)w.2�2/o�1T�0 �0 %�'y/2w/2 -*<y'*<�*<w*<#L�y$*<�*<%w(w*<�*<u& wd&�&ya&�& &&#&'Gw&-S�y-&�&.ow3V&�&4>�6#�y6&�&7w%Eu# w-#�#y*#�####iw#' y.#�#/`w4G#�#y5/#�#6w#;:y!wf!�!N�3� On�� L y�w� X  y � mwT � u w}�yz�3!w'y2i�33w8�9�;l�y)wy c�!Lw#�ykwk�yk�kkRwk   �j,u  w[ � yY �  w !y,; � -w2r � 3Oy6 � 6 :w>n � �������9��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������7request:Request]={ENABLEUNWIND=>NULL;stringNumber:CARDINAL_requestNumber*stringsPerRequest;offset:CARDINAL_0;IFstate=NILTHENRestore[];WHILEstringNumber<state.nDiscardedDOstringNumber_stringNumber+requestLimit*stringsPerRequestENDLOOP;IFstringNumber-state.nDiscarded>=state.nStringsTHENRETURN;offset_StringOffset[state,stringNumber-state.nDiscarded];MoveToString[tag,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.fileName,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestTime,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestor,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestorPassword,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.separator,state,offset];IFstringsPerRequest#6THENERROR;};GetRequest:ENTRYPROC[request:Request]RETURNS[requestNumber:INT,copies:CARDINAL]={ENABLEUNWIND=>NULL;tag:LONGSTRING_[4];IFstate=NILTHENRestore[];DOoffset:CARDINAL_0;WHILEprintingSuspendedOR(state.nStrings=0ANDreprintCopies=0)DOWAITnewRequestENDLOOP;abortCurrent_FALSE;IFreprintCopies#0THEN{requestNumber_-1;copies_reprintCopies;reprintCopies_0;RETURN;};requestNumber_ReqNumberFromStringNumber[state.nDiscarded];MoveToString[tag,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.fileName,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestTime,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestor,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.requestorPassword,state,offset];offset_NextStringOffset[state,offset];MoveToString[request.separator,state,offset];copies_DecodeCopies[tag];IFstringsPerRequest#6THENERROR;IFtag[0]='THENEXIT;��qg/E�w_,��y]])w]y c]�]!Lw#]�][ yX[�["w[#�$Z5yIZ5�Z5wZ5�yXwX�yX�XXRwX  yVwVe ?�!ty+V�V,�wV. 6�8o U?�y)-U?�U?)w.U?�U?ySwS'*^ y2S�S3~S6w;sS�SQ�\#{PI"0&*�,/:5N'*/73�L!KR!(,}1$4�I!H'*/J3�F\!D',0&48�C !Af&*y?w?�!�y"?�?#?&w*?�?>u: w:�:y:�::fw:!&y,{:�:-Ow:2y=<:�:=w?G:�:9 yn9 �9 9w9 �9 �q�y7y7y)w7yy c7y�7y!Lw#7y�7y5y5�55w5� 5y4*w4*�y4*�4*4*Rw4*  y2w0yZ0�0%w0 �!y/3w/3vy%1/3�/3&�w/3'f0G�2,�y3a/3�/344w/36 ?%�-y-�-|�-w-r y%5-�-%w*-�-+ ]�y+�+w"+�+y*=w*= [�!@�y"u*=�*=#.w*=&;�(' �"&'U� %F' �!Ry#'w#�#!' P � {, $A(,�.@<G),1H5�Y#!+.357�� #c)+,1[5&�#'.286:�m#) ,D�y vw v!�#�y% v� v% v(w, v� vy w |�a�y � { !w$8 � ���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8Discard[state,stringsPerRequest];WHILEstate.nDiscarded>=stringsPerRequest*requestLimitDOstate.nDiscarded_state.nDiscarded-stringsPerRequest*requestLimit;ENDLOOP;ENDLOOP;};RemoveRequest:ENTRYPROC[requestNumber:CARDINAL]={ENABLEUNWIND=>NULL;IFstate=NILTHENRestore[];IFrequestNumber#ReqNumberFromStringNumber[state.nDiscarded]THENERROR;Discard[state,stringsPerRequest];deferSaving_FALSE;Save[];};DeferSaving:ENTRYPROC={ENABLEUNWIND=>NULL;deferSaving_TRUE;};DoDeferredSave:ENTRYPROC={ENABLEUNWIND=>NULL;deferSaving_FALSE;Save[];};DoRequest:PUBLICPROC[action:PROC[request:Request,requestNumber:CARDINAL,abort:LONGPOINTERTOBOOLEAN]]={fileName:LONGSTRING_[80];requestTime:LONGSTRING_[20];requestor:LONGSTRING_[80];requestorPassword:LONGSTRING_[80];separator:LONGSTRING_[80];requestNumber:INT;body:LONGPOINTERTOStringRep;copies:CARDINAL;aborted:BOOLEAN_FALSE;[requestNumber,copies]_GetRequest[[fileName,requestTime,requestor,requestorPassword,separator,0]];deferSaving_TRUE;DeferSaving[];IFrequestNumber<0THEN{LogMessage["Reprint."];action[[NIL,NIL,NIL,NIL,NIL,copies],NAT.LAST,@abortCurrent!ABORTED=>{aborted_TRUE;CONTINUE}];LogMessage["Reprintcompleted."];DoDeferredSave[];}ELSE{��qg/E�w_, y]w]v#&Zy9]�]:�w['!t�#-O�Z6yX'wX�XyVwV�VU?uQ wbQ�Qy`Q�QQwQ#y.BQ�Q/ w4yQ�Q5a�7F�yPHPH)wPHy cPH�PH!Lw#PH�PHyNwN�yN�NNRwN  yLwL � i+yKRKRwKR�KRI H �yH�HwH�HF\DuAe w:Ae�Aey7Ae�AeAewAe!e�#J�y??)w?y c?�?!Lw#?�?> �y>�>wH>�><nu9 w9�9y9�9q9 >w9#�%�y7x7x)w7xy c7x�7x!Lw#7x�7x5 �y5�5w5�54)2u/2w/2�/2y}/2�/2$/25w/2 y%/2�/2&yw/2)x/)4 y-w-�-y-�-- -&-(w.=-�-.�/�1m�+y~+�+8+ow+"`�#*< yl*<�*<%*<]w*<$N�%( y(�(K(w("t�$�&y&�&&#w&'�)%E yp%E�%E)%Eaw%E"R�## yV#�#wb#�#!y!�!!! w!" Oy O� Oww O� Oy�Bw�y ;� w#��"*�#1 :/ X & �y�wH�  ybwb ��y b�b!wb$�yp�Xw{�yX�@wc�y@� (w!K�y"(�#w$3�y%�%w'�'y,�-w/W�y/w2�3o =�ykwk$S�y%k�k&w) k�ky* k�k*w0Ck�k0"  u�y w S����������������TVm$c������������������������������������������������������������������������������������������������������������������������������������������������������������������9body_LOOPHOLE[@(state[0])];IFbody.nChars#4THENERROR;body.char[1]_'P;LogMessage["Started.",requestNumber,requestor];action[[fileName,requestTime,requestor,requestorPassword,separator,copies],requestNumber,@abortCurrent!ABORTED=>{aborted_TRUE;CONTINUE}];IFabortedTHENLogMessage["Aborted.",requestNumber,requestor]ELSELogMessage["Completed.",requestNumber,requestor];RemoveRequest[requestNumber];};};CancelRequest:PUBLICENTRYPROC[requestNumber:CARDINAL]RETURNS[ok:BOOLEAN]={stringNumber:CARDINAL_requestNumber*stringsPerRequest;body:LONGPOINTERTOStringRep;IFstate=NILTHENRestore[];WHILEstringNumber<state.nDiscardedDOstringNumber_stringNumber+requestLimit*stringsPerRequestENDLOOP;IFstringNumber-state.nDiscarded>=state.nStringsTHENRETURN[FALSE];body_LOOPHOLE[@(state[StringOffset[state,stringNumber-state.nDiscarded]])];IFbody.nChars#4THENERROR;IFbody.char[0]#'THENRETURN[FALSE];body.char[0]_'X;IFstringNumber=state.nDiscardedTHENabortCurrent_TRUE;RETURN[TRUE];};RequestStatus:TYPE=PDQueue.RequestStatus;CheckRequest:PUBLICPROC[requestNumber:CARDINAL,action:PROC[request:Request,status:RequestStatus]]={tag:LONGSTRING_[4];status:RequestStatus;fileName:LONGSTRING_[80];requestTime:LONGSTRING_[20];requestor:LONGSTRING_[80];requestorPassword:LONGSTRING_[80];separator:LONGSTRING_[80];tag.length_0;FindRequest[requestNumber,tag,[fileName,requestTime,requestor,requestorPassword,separator,0]];IFtag.length=0THENstatus_notFoundELSEIFtag[0]='XTHENstatus_canceledELSEIFtag[1]='PTHENstatus_printingELSEstatus_waiting;action[[fileName,requestTime,requestor,requestorPassword,separator,DecodeCopies[tag]],status];};��qg/E�w_,�y _,�_,w o_,�_, y]w] � �y!]�]"]%w)]�][ �zZ5# - X ( .|:l V % .�y/V�V0|wV58W>�yU?wU?�U?yU?�U?w LU?�U? ySwSyS�SwS. 8 yQwQd)< 3m PHNLuI wI�IyI�IbIsI#wI'y2UI�I3 w8I�Iy9tI�I:HwHyH�HWw>H�H%� �F[ yXF[�F["wF[#�$DyD�DDD wD" yC wC �yC �C C RwC  yAdwAde ?�!ty+Ad�Ad,�w? �|+y>w>�>y<mw<m'*^ y2<m�<m3~<m6w<m;�y<Z<m�<m=w?<m�<m@[�:�y:�:w^:�:9"y7ww7w ��y7w�7w 7w#w'7w�7wy5w5 �h�y5�5 5#w5(�y)^5�5*w,5�5-_�4' �iy2w2 �ky)2�2*qw2-~ 5�y7R2�28 w:}2�2y0w0q�y0�0w�0�0c�/1+ y[+�+w+�u*: we*:�*:yb*:�*: *:w*:"y-w*:�*:.Bw3*:�*:4y9*:�*:9w(w(!y+-�-�&y&�&&w&� 5%CU #y~#�#8#ow#"`�#! yl!�!%!]w!$N�% M y M� MK Mw M"t�$�y�#w'�) yp�)aw"R�#V Z�%E' . 6  &y_w_ ��y_�_w_!%�'DySw�y� >w#J'!�(ySw�yM� w#&�(vyhwhS*� % ,j8Z  6 r�������D��������TVm$������������������������������������������������������������������������������������������������������������������������������������10CountRequests:PUBLICENTRYPROCRETURNS[requestCount:NAT]={IFstate=NILTHENRestore[];requestCount_state.nStrings/stringsPerRequest;};EnumerateRequests:PUBLICPROC[action:PROC[requestNumber:CARDINAL,request:Request,status:RequestStatus]RETURNS[continue:BOOLEAN]]={firstRequest:NAT_FirstRequest[];nRequests:NAT_CountRequests[];requestNumber:NAT_firstRequestMODrequestLimit;THROUGH[0..nRequests)DOcontinue:BOOLEAN_TRUE;myAction:PROC[request:Request,status:RequestStatus]={IFstatus=printingORstatus=waitingTHENcontinue_action[requestNumber,request,status];};CheckRequest[requestNumberMODrequestLimit,myAction];IFNOTcontinueTHENEXIT;requestNumber_(requestNumber+1)MODrequestLimit;ENDLOOP;};RegisterDisk:PUBLICENTRYPROC[read,write:PROC[address:LONGPOINTER,nwords:CARDINAL],maxWords:CARDINAL]={IFstate#NILTHEN{PDInterpSysCalls.FreeSpace[state];state_NIL;};readProc_read;writeProc_write;maxStateWords_maxWords;};LogMessage:PUBLICENTRYPROC[message:LONGSTRING,requestNumber:INT_-1,userName:LONGSTRING_NIL]={InternalLogMessage[message,requestNumber,userName];};InternalLogMessage:INTERNALPROC[message:LONGSTRING,requestNumber:INT_-1,userName:LONGSTRING_NIL]={msg:LONGSTRING_[250];Time.AppendCurrent[msg];msg[msg.length]_';msg.length_msg.length+1;IFrequestNumber>=0THEN{String.AppendChar[msg,'R];FORi:CARDINAL_requestLimit/10,i/10WHILEi#0DOString.AppendDecimal[msg,(requestNumber/i)MOD10];ENDLOOP;String.AppendChar[msg,'];};String.AppendString[msg,message];��qg/Eu_, w_,�_,y_,�_,_,_,$_,'w_,- y73_,�_,8w9_,�_,:�<u�y]w]�y]�]]Rw]  [ �!Z5uVwV�VyV�VOV"_wV&y*V�V+wV.y9XV�V:#w?V�VU?! y*gU?�U?+;wU?0s y6U?�U?7w<U?�U?<�=�?�S y+S�SwS$�Q y"Q�Q wQ�PI yVPI�PI?wPI P�! y)PI�PI*wPI, yNwN y"rN�N#X�wLy5L�LwL!Y�y"L�L#w&L�LKRyKR�KRwKR%<*/> 8�:t�yI'wI�y#I�I$�wI&)�+y0I�I1IwI4U9�H&"+NF\'C y'C �C (wC +> 3 yAeAewAeyeAe�Ae Ae#+w%Ae�Ae? � { *�,y.`?�?/rw?1 y>w>�><ou9 w9�9y9�9C9S9"w9&*Wy.N9�9.w91y79�98u9;w@9�97xy7x�7xwJ7x�7x�y%7x�7x&w,)7x�7x-�.�y5w5�y5�55Rw5 �4)"2G�y2�2w2�20/3�X-.�+ �p*<u& wq&�&yo&�&&'&"w&&Uy,&�&-B&0yw4&�&5 y%Fw%FV�y%F�%F%F"w%F'�y)b%F�%F*Jw+m%F�%F,T�.:�#% /M !uw"�y �$w(Yy.�/F2}w6�7 y�w�V�y����"w�'�y)b���*Jw+m���,T�.:�Yy`Y�YYQwYB�  ��� 'o�( /�1ybwb !�y"Nb�b#wb&�$Wywyd�/w �!,0y/)�0Cw3y6�7h�wl'(ny4Ml�l5_wl7y'w�$W�%3 u "���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������11IFuserName#NILTHEN{String.AppendString[msg,"("];String.AppendString[msg,userName];String.AppendChar[msg,')];};IFstate=NILTHENRestore[];DiscardMessages[messages.nWords-SIZE[StringBody[msg.length]]];Append[messages,msg];TryToPrintMessages[];};loggingMessages:BOOLEAN_FALSE;firstUnprintedMessage:CARDINAL_0;writeLineProc:PROC[LONGSTRING]_NIL;RegisterTTY:PUBLICENTRYPROC[writeLine:PROC[LONGSTRING]]={writeLineProc_writeLine;};TryToPrintMessages:INTERNALPROC={msg:LONGSTRING_[250];GetMsg:INTERNALPROC[n:CARDINAL]RETURNS[ok:BOOLEAN]={msg.length_0;IFn<messages.nDiscardedTHENRETURN[TRUE];IFn-messages.nDiscarded>=messages.nStringsTHENRETURN[FALSE];AppendToString[msg,messages,StringOffset[messages,n-messages.nDiscarded]];RETURN[TRUE];};IFNOTloggingMessagesORwriteLineProc=NILTHENRETURN;FORi:CARDINAL_firstUnprintedMessage,i+1UNTILNOTGetMsg[i]DOwriteLineProc[msg!ABORTED=>CONTINUE];firstUnprintedMessage_i+1;ENDLOOP;};SetLogState:PUBLICENTRYPROC[logging:BOOLEAN]RETURNS[old:BOOLEAN]={old_loggingMessages;loggingMessages_logging;IFmessages#NILTHENTryToPrintMessages[];};EnumerateMessages:PUBLICPROC[action:PROC[message:LONGSTRING]RETURNS[continue:BOOLEAN]]={msg:LONGSTRING_[250];FORi:CARDINAL_GetNumberDiscardedMessages[],i+1UNTILNOTGetString[msg,messages,i]DOIFNOTaction[msg].continueTHENEXIT;ENDLOOP;};��qg/Ey_,w_,y_,�_,_,w_,"n�]$�&1[$ Z5$WXyVwV�yV�VVRwV  U>y(XU>�U>(w*U>�U>+6SeQPHLyL�LwL!�y#L�L$8w'L�LKQyyKQ�KQ DwKQ&5�'I yMI�IwpI�yII!w&0I�I'�y(I�I)w*I�IuFZ wFZ�FZyFZ�FZ\FZmFZ"wFZ& y-FZ�FZ.Sw0FZ�yFZ11FZ5"w9FZ�FZ9�:�<�D �q C u?w}?�?y{?�??% w?(�*�>y`>�>>Qw>B� u<lw<l�<ly<l�<l?<lgw<l#y%5<l�<l&�w+l<l�<ly,T<l�<l-(w<l2_y57<l�<l5w:<l�<l;�=�: �y9w9��<y&59�9&9)w9/g�y/9�90w29�93X�y7vw7v$'y27v�7v3V7v6bw7v;�y<27v�7v<w?7v�7v@3�5"(4'y2w2�y2�2w2�2t�0y/0/0w/0y"/0�/0"�w/0$D -$�y/ /0�/0//01/05^w:F/0�/0y-w-yS-�-w-�.�y0-�-1-5'w-8)y>-�-?�w+ �y!+�+"w+'y*d+�++/w0+�+1�*9#"�$y(w(�(&u# wg#�#yd#�# ##"w#&Jy,#�#,w1#�#y2#�#3`w#8y!wf!�!N�3� Ln�e�yw�yl�Uw"Uuw�y�"w&uy+j�,w.�.y4�5z8w=�y^w^ yT^�^ w#^�^$X�%?�'$�y`�QwB� ywyS�w�4y6�7;)wh G#{y$h�h%�wy&v�'/*;w,�yw� q���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������12END.��qg/Ey_lw{_l�_l����������������TVm$���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDRemoteStream.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,19841:58:46pmPDTDIRECTORYStreamUSING[Handle];PDRemoteStream:DEFINITIONS=BEGINLookup:PROC[fileName:LONGSTRING,createDate:LONGSTRING,name,password:LONGSTRING]RETURNS[bytes:INT];Ifsuccessful,explandsfileNametoincludespecificversion.Ifunsuccessful,raisesError,below.Read:PROC[fileName:LONGSTRING,name,password:LONGSTRING,action:PROC[Stream.Handle]];MayraiseError,below.Error:ERROR[expl:LONGSTRING,retryable:BOOLEAN];retryableisahintthatitmaybeworthittotryagainlater.END.���x_:]/BZ '* -[$ -#s(\*yXwXKyX�XwXGUNyUN�UN wUN"�y$UN�UN%euQwxQ�QyvQ�QwQ y Q�Q!Q$w)XQ�Q*4 y1Q�Q2BQ5zw9Q�Q:PXy=PX�PXPX.w PX�PXy!PX�PX"VwPX'y+PX�PX,hw. PX�PX.m�xN  &~(#,1M   R$_uIwI�IyI�IwI yyI�I 2I#jw'I�I(,y3BI�I3I72w;I�I<|yHwH�HLxFl3n{uCw#C�Cy C�CwCyC�CPC!w%C�C& y-C�C-w2C�C3�xAv �A "=%-&*,"-/3y>'w{>'�>'�������1��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������PDRemoteStreamStub.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September5,198410:18:39pmPDTDIRECTORYIO,Stream,STP,Rope,PDRemoteStream,String,Commander,PDQueue;PDRemoteStreamStub:PROGRAMIMPORTSRope,STP,String,Stream,Commander,PDQueue,IOEXPORTSPDRemoteStream=BEGINError:PUBLICERROR[expl:LONGSTRING,retryable:BOOL]=CODE;RopeFromString:PROC[string:LONGSTRING]RETURNS[Rope.ROPE]={i:INTEGER_-1;fet:SAFEPROCRETURNS[CHAR]=TRUSTED{RETURN[string[i_i+1]]};IFstring=NILTHENRETURN[NIL];RETURN[Rope.FromProc[string.length,fet]];};Rs:PROC[string:LONGSTRING]RETURNS[Rope.ROPE]=RopeFromString;AppendRope:PROC[string:LONGSTRING,rope:Rope.ROPE]={action:Rope.ActionType=TRUSTED{string[string.length]_c;string.length_string.length+1;};[]_rope.Map[action:action];};Retryable:PROC[code:STP.ErrorCode]RETURNS[BOOL]={RETURN[SELECTcodeFROMconnectionTimedOut,connectionRejected,connectionClosed,noConnection,noNameLookupResponse=>TRUE,ENDCASE=>FALSE]};Lookup:PUBLICPROC[fileName:LONGSTRING,createDate:LONGSTRING,name,password:LONGSTRING]RETURNS[bytes:INT]={bytes_MyLookup[fileName,createDate,name,password!STP.Error=>TRUSTED{expl:LONGSTRING_[80];AppendRope[expl,error];ERRORError[expl:expl,retryable:Retryable[code]]};];};ParseTest:PROC[fileName:Rope.ROPE]RETURNS[server,rest:Rope.ROPE]={f:LONGSTRING_[80];s:LONGSTRING_[80];��x_,]/BZ '* -[$ -#s) +WyXXKwX�XmyyX�XwyX�X U$b04v VSyjS�SQwQyQ�QOwQ�Q!' /N6yPIwPI N�yN�NwKRy KR�KRKRwKRoy"OKR�KR#KR&@w*KR�KR+ y1KR�KR2w4KR�KR5�y7KR�KR8w;KR�KRuH wH�HyH�HwHy$1H�H$H("w,H�Hy-vH�H.JwH3y7mH�H8Aw:~H�H;f�=K�F[yeF[�F[wF[)�DyD�D/DDwD"�y#D�D#w&gD�D'O�y)4D�D)wD/"�y/D�D0wD5?yC wC �yfC �C OC C wC &(�y&C �C 'tw(C �C (�yAewAeq*?u<nw<n�<ny~<n�<n%w<n%y<n�<n<nw$5<n�<ny%<n�<n%w<n+(y/<n�<n/w2$<n�<n3 �4u9 wg9�9yd9�9 w9 y!9�9"w9%w*9�9*.y2*9�92w5;9�96"�8�7x"�y$7x�7x%<w7x*q�5!�"4) � &h�(M20O� /2u+w+�+y+�+Hw+Hyk+�+ w!k+�+! y(+�+)w+/ �y/n+�+0'w2+�+3�5e�y*<w*<q�y*<�*<sw*<y *<�*<!w*<$2k(8 (q8[y:(�(;w>(�(y&w&yo&�&(w &�&%Eu!wx!�!yv!�!!.w! y%!�!&l!)w.!�!. y6A!�!6!:2w>!�! OyU O� O O Ew$ O� Oy% O� O&mw O+y0 O� O0w2! O� O3 �4��%% ,06�y�w���m!y���ow�#�Y'yY�Y]YwY#�%'"y 'w  "&) ,ib'uw�y�w "hy%�&w)�y)�*w/47y;_�<3w>p�?W�� uy{ u� u4 ulw u]� y � ? ww h��������*��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������2r:LONGSTRING_[80];AppendRope[f,fileName];ParseName[f,s,r];server_Rs[s];rest_Rs[r];};ParseName:PUBLICPROC[fileName,server,rest:LONGSTRING]={state:NAT_0;server.length_0;rest.length_0;FORi:NATIN[0..fileName.length)DOc:CHAR_fileName[i];charType:NAT_SELECTcFROM'[=>0,'/=>1,']=>2,'<=>3,'>=>4,'!=>5,IN['0..'9],IN['a..'z],IN['A..'Z]=>6,'-,'+,'$,'.,''=>6ENDCASE=>Error[expl:"Illegalcharacterinfilename",retryable:FALSE];SELECTstate*7+charTypeFROM0*7+0=>state_1;0*7+1=>state_7;1*7+6=>{server[server.length]_c;server.length_server.length+1};1*7+2=>state_2;2*7+3=>{state_3;rest[rest.length]_'<;rest.length_rest.length+1};3*7+6,3*7+4=>{rest[rest.length]_c;rest.length_rest.length+1};3*7+5=>{state_4;rest[rest.length]_c;rest.length_rest.length+1};4*7+6=>{rest[rest.length]_c;rest.length_rest.length+1;IFcIN['0..'9]THENstate_5ELSEIFc='lORc='LORc='hORc='HTHENstate_6ELSEstate_9};5*7+6=>{rest[rest.length]_c;rest.length_rest.length+1;IFcNOTIN['0..'9]THENstate_9};7*7+6=>{server[server.length]_c;server.length_server.length+1};7*7+1=>{state_8;rest[rest.length]_'<;rest.length_rest.length+1};7*8+6=>{rest[rest.length]_c;rest.length_rest.length+1};7*8+1=>{rest[rest.length]_'>;rest.length_rest.length+1};���qg/E�w_,y_,�_,?_,ww_,h�]  [ zZ5�X�2VuSwS�SyS�SfSwwS! ',?y/YS�S0S3Jw7S�S8�:�QyQ�QwQ�5PH �N �?yLwLySL�L;LLwL#y(lL�L)R�wKRyKR�KRywKR� IyI�IwI�y )I�I wI$�y&I�I&wH'fF['ID'fC 'IAe'I?'}y>'w>y`>�>�w>7y#y>�>#�w>%O),~<n'jO "�y:'w:) &+13C 9 y9w9�9�y7xw7xy%k7x�7x&$w5'c!�#!4)'c!�#!2'c+{�-. 6�8F 0�/2'c!�#!-'c"D�#%/�02 9Q�: +�*<'('c(�*1+ 2w�4 :�<&'c"D�#%/�025 8�:p %F�#'c�!8"�$V% ,�.) 4�6y O8w O�y O� Oh�w Oy! O� O"w O%(�*c�y8w.�M�!2y"r�#N�w$�%�'y)o�*K�w+�,�.y0K�1'�w2y6x�71w:==n�>�y�8w��!E�Y8'c� 8"�$V% ,�.) 4�6yb8wb�yb�bbwb y$b�b%wb(+�-e�8'c+{�-. 6�8F l�'c"D�#%/�02 9Q�: � u'c(�*1+ 2w�4 :�< 'c(�*1,7 2�4r ; �=���������������TVm$;��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������37*8+5=>{state_4;rest[rest.length]_c;rest.length_rest.length+1};ENDCASE=>Error[expl:"Illegalfilename",retryable:FALSE];ENDLOOP;SELECTstateFROM3,8=>{rest[rest.length]_'!;rest[rest.length+1]_'H;rest.length_rest.length+2};5,6=>NULL;ENDCASE=>Error[expl:"Illegalfilename",retryable:FALSE];};MyLookup:PROC[fileName,createDate,name,password:LONGSTRING]RETURNS[bytes:INT_0]={server:LONGSTRING_[80];rest:LONGSTRING_[80];stp:STP.Handle_STP.Create[];open:BOOL_FALSE;BEGINENABLEUNWIND=>{IFopenTHENstp.Close[!STP.Error=>TRUSTED{CONTINUE}];stp_stp.Destroy};expandedName:LONGSTRING_[80];success:BOOLEAN_FALSE;NoteFileProc:STP.NoteFileProcType=TRUSTED{fileInfo:STP.FileInfo_stp.GetFileInfo[];continue_no;success_TRUE;AppendRope[expandedName,file];bytes_fileInfo.size;createDate.length_0;AppendRope[createDate,fileInfo.create];};desiredProps:STP.DesiredProperties_ALL[FALSE];desiredProps[directory]_TRUE;desiredProps[nameBody]_TRUE;desiredProps[version]_TRUE;desiredProps[createDate]_TRUE;desiredProps[size]_TRUE;ParseName[fileName,server,rest];String.AppendChar[expandedName,'[];String.AppendString[expandedName,server];String.AppendChar[expandedName,']];[]_stp.Open[Rs[server]];open_TRUE;stp.Login[Rs[name],Rs[password]];stp.SetDesiredProperties[desiredProps];stp.Enumerate[Rs[rest],NoteFileProc];stp.Close[!STP.Error=>TRUSTED{CONTINUE}];stp_stp.Destroy;IFsuccessTHEN{String.Copy[to:fileName,from:expandedName]}ELSEError[expl:"Filenotfound",retryable:FALSE];END;���qg/E�w_,'c"D�#%/�025 8�:p ]�y['w[) &+ 2Z y8[�[9Sw<7[�[<�yZ6wZ6�Z6yXwXyX�XwV�m$�&;( 3�597 >]�U? �{S�ymS�SUwS�SyQwQ $) 0H y6Q�Q7Aw:&Q�Q:�PIuLwL�Ly|L�L$wL# " *.+y4L�L5[L8w<L�LyKRwKRyBKR�KRwKR� _!�#�IyI�ICI{wI l�!HyH�HHwH� F\yF\�F\[wF\�F\�yF\�F\w F\�F\ DyD�DwD�y-D�DwD�DyC C ;C `wC "$�}AexAe}Ae�AexAe #�}%Ae�Ae%x'1Ae�Ae'+=}-Ae�Ae.xAe3�}4pAe�Ae5;x:Ae�Ae;U??� w><n yg<n�<n <n#Ww<n(H�):yB:�:w: g�y!:�:"w%:�:u9 w9�9y9�9w 9�9 m+�y-9�9.w93�7x'y7x�7x(w7x�7x$7�%5'�Z4)'�yg4)�4) w 4)�4)2')0'�H /2'"�#-'&+'*; y*;�*;Sw*;�*; +*�y,*;�*;-w.*;�y*;/`w2*;�*;3a�(#O�y$(�(%w((�(&$V�y%&�&&w)&�&%E"E�y#%E�%E$w&%E�%E#$X�y%#�#&w)#�#! (�y!!�!"nw$!�! N"&+L,!+X+L,`��y�wA�a!r '#Y j T�yRj�jwRj�j"]y$j�j%wj*�y+j�j,\w1j�j2|x?� ywyp�)w6)/3 y tw td u"%r* y0 t� t1w4e t� t4�y w � ���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4};Read:PUBLICPROC[fileName:LONGSTRING,name,password:LONGSTRING,action:PROC[Stream.Handle]]={MyRead[fileName,name,password,action!STP.Error=>TRUSTED{expl:LONGSTRING_[80];AppendRope[expl,error];ERRORError[expl:expl,retryable:Retryable[code]]};];};MyRead:PROC[fileName:LONGSTRING,name,password:LONGSTRING,action:PROC[Stream.Handle]]={server:LONGSTRING_[80];rest:LONGSTRING_[80];stp:STP.Handle_STP.Create[];open:BOOL_FALSE;stream:Stream.Handle;BEGINENABLEUNWIND=>{IFopenTHENstp.Close[!STP.Error=>TRUSTED{CONTINUE}];stp_stp.DestroyIFstream#NILTHEN{stream.Delete;stream_NIL};};ParseName[fileName,server,rest];[]_stp.Open[Rs[server]];open_TRUE;stp.Login[Rs[name],Rs[password]];stream_Stream.FromIOStreams[stp.CreateRemoteStream[Rs[rest],read],NIL];action[stream];stp.Close[!STP.Error=>TRUSTED{CONTINUE}];stp_stp.Destroy;stream.Delete;stream_NILEND;};PeachLogCommand:Commander.CommandProc=TRUSTED{out_cmd.out;PDQueue.RegisterTTY[WriteLine];[]_PDQueue.SetLogState[TRUE];};out:IO.STREAM_NIL;WriteLine:PROC[line:LONGSTRING]~{out.PutRope[Rs[line]];out.PutRope["\n"];};Commander.Register["PeachLog",PeachLogCommand,""];���qg/E�w_,u[w[�[y[�[[w[T y$1[�[$[("w,[�[-k1y7[�[8[;w@W[�[Z6yXZ6�Z6w{Z6�Z6$ �%�X")O-g�yVwV�Vm!yV�VowV#�U?'yU?�U?]U?wU?#�%S'"yQ'wQ "&) ,iPI'NLuIwI�IyI�IwI y!I�I"8I%pw)I�I*.y5HI�I6I98w=I�IHyXH�Hw{H�H$ �%�F\yF\�F\CF\{wF\ l�!DyD�DDwD� C yC �C [wC �C �yC �C w C �C AeyAe�AewAe�y-Ae�AewAe�Ae? y>>;>`w>"$�}<ox<o}<o�<ox<o #�}%<o�<o%x'1<o�<o'+=}-<o�<o.x<o3�}4p<o�<o5;x:<o�<o;U:?� y9w9-�y9�99w9#g-:1�y379�94 w5C9�95�7x5"&4)`�2�y2�2wA2�20!r /2�5>y-w-�-W�+*< T�yR*<�*<wR*<�*<"]y$*<�*<%w*<*�y+*<�*<,\w1*<�*<2|x(?� w& %E�y%E�%E#w#�#!uw�/�y0�1w6��z�XO�y#�$Jw&�' � y�Lw�yJ�2wU�uw�y�wy=�#.w'�(�*�k &2�������S��������TVm$3������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5END.���qg/E�y^w{^�^����������������TVm$���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDStrikeFormat.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.LastchangedbyDougWyatt,August23,19823:34pmLastchangedbyMichaelPlass,September19,19841:12:52pmPDTPDStrikeFormat:DEFINITIONS={Header:TYPE=MACHINEDEPENDENTRECORD[format(0):Format,min(1),max(2):CHARACTER,--minimum,maximumcharactercodesmaxwidth(3):CARDINAL--maximumspacingwidthofanycharacter];Flag:TYPE=MACHINEDEPENDENT{F(0),T(1)};Format:TYPE=MACHINEDEPENDENTRECORD[oneBit:Flag,--alwaysTindex:Flag,--Fforsimplestrike,Tforstrikeindexfixed:Flag,--Tifallcharactershavesamewidthkerned:Flag,--TifKerned,FifPlainunused:[0..7777B]--shouldbe0];BoundingBox:TYPE=MACHINEDEPENDENTRECORD[fbbox(0),fbboy(1):INTEGER,--boundingboxoffsetsfbbdx(2),fbbdy(3):INTEGER--boundingboxsize];Body:TYPE=MACHINEDEPENDENTRECORD[length(0):CARDINAL,--numberofwordsinstrikebodyascent(1),descent(2):INTEGER,--scanlinesaboveandbelowthebaselinexoffset(3):INTEGER,--always0(obsolete)raster(4):CARDINAL--numberofwordsperscanlineinthestrikefollowedbybitmap(raster*(ascent+descent)words)followedbyXTable(toendofbody)];WidthEntry:TYPE=MACHINEDEPENDENTRECORD[offset,width:[0..377B]];nullWidthEntry:WidthEntry=[377B,377B];XTable:TYPE=RECORD[SEQUENCECOMPUTEDCARDINALOFCARDINAL];WTable:TYPE=RECORD[SEQUENCECOMPUTEDCARDINALOFWidthEntry];PlainStrike:TYPE=MACHINEDEPENDENTRECORD[header:Header,--commontoallstrikefontsbody:Body];KernedStrike:TYPE=MACHINEDEPENDENTRECORD[header:Header,--commontoallstrikefontsbox:BoundingBox,--thefontboundingboxbody:Body--theactualstrike��x_,]/BZ '* -[E!H%(%+k.zZ5Ea"A(+.`3I5wVyV�V wV!�#�Sy;S�SwS�yS�SSS'ew,SS�SQ PH ybPH�PH-w!PH�PHx"|PH�PH"�#*S06wN yqN�N<xN ,!(,02&4wLIyI�I9wI�yI�IIwI%�y&ZI�wI'y)I�wI*LF[yEF[�F[wF[�yF[�F[F[F['nw,\F[�F[DxND�D��wC 7xC �C .�+�!%�'j)-TwAexgAe�Ae��J % (1+w? x?�?��i"�$-%w>6 x>�>��"F$�w<n9 y9�9w9v�y[9�9l9#9+.w09�97wy7w�7wcw"97w�7wx#7w�7w#�$*p-w5y5�5{w5x#Y5�5#�$*-_w4(0y0�0w0k�yP0�0b0v0&#w+0�0/2 yI/2�/2w/2�/2x]/2�/2�$&\*1+/w-y-�-w"-�-x#-�-$+�%)*.1N57dw+ y+�+w+�+x+�+!�#x�$ w*; y*;�*;x*; #%)j+024(@+&@�!#2w%E! y!�!w!c�yH!�!Z!"n!*w/ !�!/m 7f NF �" yE�w�y�pw�y%,35w;�<B�XyX�XVwX�yX�XwX�yXEX& X-+X3wX6�  ya�w�y�!)w.y�ax+a�a�" #%)ow y�wM�y2�C#W+w/�x+��" #%)ow t# x% t� t� #)w x � ��L \���������������TVm$������������������������������������������������������������2followedbyWTable];}.���qg/E�x_,@w]Z6����������������TVm$� ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDTextBitmap.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September19,19849:12:44amPDTDIRECTORYPDInterpBitmap;PDTextBitmap:DEFINITIONS=BEGINSetFont:PROC[fontFileName:LONGSTRING,userName,password:LONGSTRING]RETURNS[ok:BOOLEAN];fontFileNameshouldbeafullfilenameofakernedstrike(ks)font;iffileisnotavalidksfile,okisfalse.MayraisePDRemoteStream.Error;Example:"[Indigo]<AltoFonts>TimesRoman18.ks"Warning:thismoduleisnotmonitored,soavoidchangingfontswhileothercallsarebeingmade.fontName:READONLYLONGSTRING;FontAscent:PROCRETURNS[INTEGER];FontDescent:PROCRETURNS[INTEGER];TextWidth:PROC[string:LONGSTRING,start:NAT_0,length:NAT_NAT.LAST]RETURNS[INTEGER];TextToBitmap:PROC[dest:PDInterpBitmap.BitmapDesc,string:LONGSTRING,start:NAT_0,length:NAT_NAT.LAST,function:PDInterpBitmap.Function];Putsthetextintothebitmap,assumingastrike-fontorientationofthecharacters(i.e.,thelineoftextrunsinthefastdirection).Thetextwillbeplacedsothefirstcharacterhasitsreferencepointattheoriginofthebitmap.Thetextwillbeclippedtothedestinationbounds.END.���x_:]/BZ '* -[$ $$) +WyXwXKUN yUN�UN wUN �y"UN�UN#uQwQ�QyQ�QOwQN y"Q�Q"Q%w*aQ�Q+>2&y8Q�Q9VQ<w@Q�QyPXwPXyPX�PXQw8PX�PX�xN x� #8%)0*�,0|4?7:L;=?bM �A$Kb"]I $He"4 (*.547Y:>cFlwCyC�CCC w%ZC�Cu? w?�?y?�?U?Uw? `�y ?�?!-w&?�?&f�u< wv<�<ys<�<<w<!&�y!<�<!w&<�<',�u91wY91�91yV91�91w91y91�91i91"w' 91�91'y+s91�91,[w91.l�/1y6991�917!w9192�y:91�91;w=491�y91=w@q91�91y7w7�y$7�7wd7�7�u4; w4;�4;y4;�4;Hw4;G 2Yy64;�4;7b4;:w?4;�4;2y>2�2'w27�Qy2�2w2 �y"2�2#sw%�2�y2%Ww(<2�2)/ x0\#5# (�*# 0 79(;t /E^$!,"%' .1c4*68<>v-$( )+/1393;>+' "y(wi(�(���������������TVm$����������������������������������������������������������������������������������������������������������������������������������PDTextBitmapImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September26,19845:33:47pmPDTDIRECTORYEnvironment,PDInterpBitmap,PDInterpSysCalls,PDTextBitmap,Stream,PDStrikeFormat,PDRemoteStream,Inline,String;PDTextBitmapImpl:PROGRAMIMPORTSPDInterpBitmap,PDInterpSysCalls,PDRemoteStream,Stream,Inline,StringEXPORTSPDTextBitmap=BEGINfontName:PUBLICLONGSTRING_[120];bc:CHAR=';ec:CHAR='~;charBitmap:ARRAYCHAR[bc..ec]OFPDInterpBitmap.BitmapDesc;charWidth:ARRAYCHAR[bc..ec]OFINTEGER;fontAscent:INTEGER_0;fontDescent:INTEGER_0;ksFontBuffer:LONGPOINTER_NIL;bytesPerWord:NAT=Environment.bytesPerWord;nilBitmap:PDInterpBitmap.BitmapDesc=[sOrigin:0,fOrigin:0,sMin:0,fMin:0,sSize:0,fSize:0,pointer:NIL,rast:0,lines:0];BadFont:ERROR=CODE;SetFont:PUBLICPROC[fontFileName:LONGSTRING,userName,password:LONGSTRING]RETURNS[ok:BOOLEAN_FALSE]={cr:LONGSTRING_[40];nameCopy:LONGSTRING_[120];NameCopy:PROCRETURNS[LONGSTRING]={String.Copy[nameCopy,fontFileName];RETURN[nameCopy]};bytes:INT_PDRemoteStream.Lookup[NameCopy[],cr,userName,password];newBuffer:LONGPOINTER_NIL;bytesRead:INT_0;readFile:PROC[stream:Stream.Handle]={bytesRead_Stream.GetBlock[stream,[blockPointer:newBuffer,startIndex:0,stopIndexPlusOne:bytes]].bytesTransferred;};IFksFontBuffer#NILTHEN{FORc:CHARIN[bc..ec]DOcharBitmap[c]_nilBitmap;charWidth[c]_0���x_,]/BZ '* -[$ $$) +WyXwXK )5 Vp+/mSyS�SLQwQ!j,8o=zPIyNwN %�y" N�N"wKRyKR�KRKRKRwKR#{�%IyAI�I wI���Hy H�HwH�F\ yF\�F\F\awF\�F\y#UF\�F\$2�wF\%oD y,D�DDw+D�Dy"D�D#�D$w* D�DC  yLC �C wC �Ae yAe�AerwAe�Y? y?�?{?w?!T�y"?�?#w$?�?> yR>�>;w>L�1<o '�)�:J9?7x54)20y50�0wA0�0/2-�+(y (�(w(�y(�(Qw(�(u%Ew%E�%Ey%E�%EO%E_w%E y&%E�%E'u%E*w/%E�%E/6y=V%E�%E>#w"#�#y #�#w#y#�#w#$�y%#�#&Ww)<#�#*#�,�!y!�!!w!� Oy\ O� O OMw O!>�"uwt�yr�w"%�y"�#A&xw*�+�-��! yXwXq  y � kw �!13: b y%b�bbwb!�y#Db�b$,w%Ob�b y�w�8y�w�`J )�*�k�@* 3x : d!>y uw u �y u� u uvw u#<�y w y � V gw >y! � "�w $ ,�.n 5H =y�?��������'��������TVm$D������������������������������������������������������������������������������2ENDLOOP;PDInterpSysCalls.FreeSpace[ksFontBuffer];fontAscent_fontDescent_0;ksFontBuffer_NIL};fontName.length_0;newBuffer_PDInterpSysCalls.AllocateSpace[(bytes+bytesPerWord-1)/bytesPerWord];PDRemoteStream.Read[fontFileName,userName,password,readFile];IFbytesRead#bytesTHEN{PDInterpSysCalls.FreeSpace[newBuffer];RETURN[FALSE]};ok_TRUE;ParseFont[fontFileName,newBuffer,bytes!BadFont=>{ok_FALSE;CONTINUE};];IFokTHEN{ksFontBuffer_newBuffer;}ELSE{FORc:CHARIN[bc..ec]DOcharBitmap[c]_nilBitmap;charWidth[c]_0ENDLOOP;PDInterpSysCalls.FreeSpace[newBuffer];fontAscent_fontDescent_0;String.Copy[to:fontName,from:fontFileName];};};ParseFont:PUBLICPROC[fontFileName:LONGSTRING,buffer:LONGPOINTER,bytes:INT]={wordIndex:INT_0;ReadBlock:PROC[dest:LONGPOINTER,words:CARDINAL,wordOffset:INT_-1]={IFwordOffset>=0THENwordIndex_wordOffset;Inline.LongCOPY[from:buffer+wordIndex,nwords:words,to:dest];wordIndex_wordIndex+words;};strike:PDInterpBitmap.BitmapDesc_nilBitmap;defaultCharBitmap:PDInterpBitmap.BitmapDesc_nilBitmap;defaultCharWidth:INTEGER_0;header:PDStrikeFormat.Header;ReadBlock[@header,SIZE[PDStrikeFormat.Header],0];IFheader.format.oneBit#TTHENERRORBadFont;IFheader.format.index#FTHENERRORBadFont;IFheader.format.unused#0THENERRORBadFont;IFheader.format.kerned=TTHEN{boundingBox:PDStrikeFormat.BoundingBox;body:PDStrikeFormat.Body;xInSegment,prevXInSegment:CARDINAL;xInSegmentOffset:INT;widthEntryOffset:INT;���qg/E�y_ewx_e�_e])\ � #/�$Zn k�yZn�ZnwXW�Ux�SDR)!(/5 yPwPI�.yP�P|wP"�N&yM2wM2q�yM2�M2wrM2�M2KI�y{I�I4wI�IH; 'xF�#M�} fF�F!x$F�F}%F�F%x+HF�F+�wDyCDwCDyCD�CDOwCD[�A k� ?�y>Nw>NB�y<w<y<�<V<gw<>y!<�<"�w<$ ,�.n 5H =y�?�y:wx:�:9W&7 � #/�$6#'i 4`2u/jw/j�/jy/j�/j/jw/j\ y(/j�/j(/j,w0o/j�/j1Ky5/j�/j6/j9w?/j�/j-y-�-,w-�-��, y],�,w,�yu*swi*s�*syg*s�*sw*sy*s�*s *s#w(*s�*s)y.>*s�*s/ w4u*s�*s5R y<*s�*s=\w*s?�(��y'$w'$ h�y'$�'$ Vw'$#b*S�+ %}"!.u38':N#�"r�$W"- ,'&�( S/L�0 7y7�7.w7"�$y �w � 0y@w@�y!@�w@y"@�@#@&w@+&yw�y �wy"0�"%w*yw �!�y#&�#&w+yIwI�y!I�wIy#I�I#wI&� R y&R�R&w,HR�R y � 'w � yP � w [ � �������w��������TVm$������������������������������������������������������������������������3widthEntry:PDStrikeFormat.WidthEntry;bodyOffset:INT;ReadBlock[@boundingBox,SIZE[PDStrikeFormat.BoundingBox]];bodyOffset_wordIndex;ReadBlock[@body,SIZE[PDStrikeFormat.Body]];fontAscent_body.ascent;fontDescent_body.descent;strike_[sOrigin:-body.ascent,fOrigin:0,sMin:0,fMin:0,sSize:body.ascent+body.descent,fSize:body.raster*Environment.bitsPerWord,pointer:buffer+wordIndex,rast:body.raster,lines:body.ascent+body.descent];wordIndex_wordIndex+strike.rast*strike.lines;widthEntryOffset_wordIndex+(header.max-header.min+3)*SIZE[CARDINAL];IFwidthEntryOffset#bodyOffset+body.lengthTHENERRORBadFont;ReadBlock[@prevXInSegment,SIZE[CARDINAL]];xInSegmentOffset_wordIndex;FORchar:CHARIN[header.min..header.max]DOcharPixels:PDInterpBitmap.BitmapDesc_strike;ReadBlock[@xInSegment,SIZE[CARDINAL],xInSegmentOffset];xInSegmentOffset_xInSegmentOffset+SIZE[CARDINAL];ReadBlock[@widthEntry,SIZE[PDStrikeFormat.WidthEntry],widthEntryOffset];widthEntryOffset_widthEntryOffset+SIZE[PDStrikeFormat.WidthEntry];IFwidthEntry#PDStrikeFormat.nullWidthEntryTHEN{IFwidthEntry.width>header.maxwidthTHENERRORBadFont;charPixels.fOrigin_widthEntry.offset+boundingBox.fbbox-prevXInSegment;charPixels.fMin_prevXInSegment;charPixels.fSize_xInSegment-prevXInSegment;IFcharIN[bc..ec]THEN{charBitmap[char]_charPixels;charWidth[char]_widthEntry.width;};};prevXInSegment_xInSegment;ENDLOOP;ReadBlock[@xInSegment,SIZE[CARDINAL],xInSegmentOffset];xInSegmentOffset_xInSegmentOffset+SIZE[CARDINAL];ReadBlock[@widthEntry,SIZE[PDStrikeFormat.WidthEntry],widthEntryOffset];widthEntryOffset_widthEntryOffset+SIZE[PDStrikeFormat.WidthEntry];IFwidthEntry#PDStrikeFormat.nullWidthEntryTHEN{strike.fOrigin_widthEntry.offset+boundingBox.fbbox-prevXInSegment;���qg/E�w_, ] y]�]w]�][y$ [�[$w&[�[&Z5 !� XyX�Xw!X�X!V � U? �> S�Q�Qm PHbNL KRI$HXF[0 DC Ae�"r�$W?�>$y-Y>�>-w/>�y>07w6n>�>6�y<nw<n~�!c (�*d y1<n�<n2<n5w<n:J:y&2:�:&w(:�y:)w/G:�:/9D� y7xw7xy{7x�7xF7xXw7x/y.7x�7x/�w5 . �/4)y%I4)�4)%w'4)�y4)((w._4)�4).�/2 U�!-"�y/2�2/w12�y21w82�28�0y$0�0%{w'W0�0'/2-�!t,F�y+wd+�+y*<w*< �y3*<�*<4w*<7�y('w(#�$y/(�(0_(3lw(8&'"N�%F3#' �"!' �"py O'w Oy O� OH�w Oy"P O� O# w O&�8#�%v �8#Z�$Y8'  �!= ybwb�by#8�#w%�y&w,N�,�-D�+�y,�-w/q�y/w6 �6n�ky"k�k#jw%Fk�k%�c*5�y,�,w.�.y uw u �y1 u� u2w u5�  {�3���������������TVm$��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4strike.fMin_prevXInSegment;strike.fSize_xInSegment-prevXInSegment;defaultCharBitmap_strike;defaultCharWidth_widthEntry.width;}ELSEERRORBadFont;}ELSEERRORBadFont;FORchar:CHARIN[bc..ec]DOIFcharBitmap[char].pointer=NILTHEN{charBitmap[char]_defaultCharBitmap;charWidth[char]_defaultCharWidth;};ENDLOOP;IFwordIndex*bytesPerWord#bytesTHENERRORBadFont;};FontAscent:PUBLICPROCRETURNS[INTEGER]={RETURN[fontAscent]};FontDescent:PUBLICPROCRETURNS[INTEGER]={RETURN[fontDescent]};TextWidth:PUBLICPROC[string:LONGSTRING,start:NAT_0,length:NAT_NAT.LAST]RETURNS[textWidth:INTEGER]={textWidth_0;FORi:NATIN[start..start+length)DOIFi>=string.lengthTHENEXITELSE{char:CHAR_string[i];IFcharIN[bc..ec]THENtextWidth_textWidth+charWidth[char];};ENDLOOP;};TextToBitmap:PUBLICPROC[dest:PDInterpBitmap.BitmapDesc,string:LONGSTRING,start:NAT_0,length:NAT_NAT.LAST,function:PDInterpBitmap.Function]={w:INTEGER_0;FORi:NATIN[start..start+length)DOIFi>=string.lengthTHENEXITELSE{char:CHAR_string[i];IFcharIN[bc..ec]THEN{bitmap:PDInterpBitmap.BitmapDesc_charBitmap[char];bitmap.fOrigin_bitmap.fOrigin+w;PDInterpBitmap.Transfer[dest,bitmap,function];w_w+charWidth[char];};};ENDLOOP;};END.��qg/E�w_, %�] �[ �"Z5 m�!X�yVVSwVU>�ySSBwSyQwQyjQ�Q5QGwQy!Q�Q"�PHwPH#�y%PH�PH&PH(nwPH,3�N�!TL8� KQyIwI�IyHwH"�$y('H�H(H+wH0FZuC  wC �C yC �C UC fC  wC %�y%|C �C %w*C �C +�-�y.9C �C / wC 3 u? wv?�?ys?�??,?w?%�y&B?�?&w+?�?,i�.N�y.?�?/w?4ku<mwY<m�<myV<m�<m<mw<my#h<m�<m$!<m'Yw+<m�<m,y0+<m�<m1w<m3%�46>y:<m�<m;w<m=�y:w*:�y:wf:�:yN:�:"w:Y y#:�:$w(:�:)�+�9k�y7vw7vyB7v�7v*7v;w7vy&O7v�7v'5�5w5�( y 5�5 5#4'w4'S�2y2�2jw2|� y0w0y0�06�w0y ?0�0 w0$*}�, 2�4g/0y-w-�-+u( w(�(y(�(H(Yw(!�$7y;a(�(<&w"&�&y&�&pw&�y#N&�&$6w&&G�y'&�&(w*I&�y&*w-&�&.b%C B�"'�#y#�#Xw#�@y!w!yB!�!*!;w!y&O!�!'5� Lw L�( y L� L  L#wS�y�jw|� yVwVyV�V6�wVy ?V�V wV$�'S.M�/' �" +f�-K_'*/ '��5��'hyw�y wi � ���������������TVm$[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PDUser.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September4,19841:58:46pmPDTDIRECTORYStreamUSING[Handle];PDUser:DEFINITIONS=BEGINThismoduleprovidesachat-styleuserinterfacetothepeachprinter.Normallyoneinstanceofthiswillberunningontheprinter'stty,andaninstancewillexistforeachopenChatconnection.Thismodule,however,doesnotcreateanyinstances.TalkWithUser:PROC[stream:Stream.Handle];Exitswhenuserquitsortheconnectionisbroken.Assumesabi-directionalstream.END.��x_: ]/BZ '* -[$ -#s(\*yXwXKyX�XwXGUNyUN�UN wUN�yUN�UN[xS�$ %2(-/F15i:QT7 d"4'H);+03057=PX,S (+06599;N_ uKb w{Kb�KbyyKb�Kb wKb #mxI J"$O +,H� !yDw{D�D���������������TVm$�������������������������������������������������������PDUserImpl.mesaCopyright(C)1984,XeroxCorporation.Allrightsreserved.MichaelPlass,September27,19849:33:14amPDTDIRECTORYPDQueue,PDUser,Process,Stream,Time,PDRemoteStream,NameInfoDefs,String;PDUserImpl:PROGRAMIMPORTSPDQueue,Process,Stream,Time,PDRemoteStream,NameInfoDefs,StringEXPORTSPDUser=BEGINhelloMsg:LONGSTRING_"PeachPDPrintServer";CommandCode:TYPE={login,cancel,check,help,listQueue,messages,print,reprint,resetQueue,setLoginMessage,start,stop,wait,quit,ambiguous,illegal};commandTable:ARRAYCommandCode[login..quit]OFLONGSTRING_[login:"Login",cancel:"Cancel",check:"Check",help:"Help",listQueue:"ListQueue",messages:"Messages",print:"Print",reprint:"Reprint",resetQueue:"ResetQueue",setLoginMessage:"SetLoginMessage",start:"Start",stop:"Stop",wait:"Wait",quit:"Quit"];Upper:PROC[ch:CHAR]RETURNS[CHAR]=INLINE{RETURN[IFchIN['a..'z]THENch-('a-'A)ELSEch]};defaultRegistry:LONGSTRING_".pa"L;loginMessage:LONGSTRING_[160];TalkWithUser:PUBLICPROC[stream:Stream.Handle]={ENABLEStream.EndOfStream,Stream.TimeOut=>GOTOQuit;command:LONGSTRING_[80];user:LONGSTRING_[80];password:LONGSTRING_[80];account:LONGSTRING_[80];loggedIn:BOOLEAN_FALSE;quitting:BOOLEAN_FALSE;��x_,]/BZ '* -[$ $$) +WyXwXK"',0V kS yuS�SQwQ]"'+78 PIyNwNL�yL�LwIyiI�I"IZwI K�!&)�,sF\ yVF\�F\wF\� %2)-1f 7>D ;),,/386t C ? y*?�?w?y0?�?1d�?2?6w?;�=�><o:_9 7x  5Y 4)2 0  /3-+w*<w(b&u#w#�#y#�#6w#6y#�#wQ#�#y 9#�#! w#&D�y&#�#'rw*�#�#*�y,#�#-6w#1h�y!w!q�y!�!>�w!{ya!�!�w!8y""!�!"w!%'�(*�+y."!�!.w!1q O�y����w�#�%m y�w"�$Wub w{b�byyb�b b1wb"(% 1�3�yw)% 0*y2�3w6y�w"�$Mkywk�k0khwkY� y{�4lw"]�#y�Nw!w�# uy9 u� uw u]�y u� u!w$ u� u y � dw �y \ � !w# � ���������������TVm$������������������������2accessAllowed:BOOLEAN_TRUE;echo:BOOLEAN_TRUE;flushed:BOOLEAN_FALSE;commandCode:CommandCode;lastRequest:INT_-1;PutChar:PROC[char:CHAR]={Stream.PutChar[stream,char];flushed_FALSE;};PutString:PROC[string:LONGSTRING]={Stream.PutString[stream,string];flushed_FALSE;};PutLine:PROC={PutChar['\n];PutChar['\012];};PutOK:PROC={PutLine[];PutChar['o];PutChar['k];PutLine[];};PutXXX:PROC={PutChar['];PutChar['X];PutChar['X];PutChar['X];PutLine[];};sep:CHAR_';DelHit:ERROR=CODE;SendNow:PROC={Stream.SendNow[stream];flushed_TRUE};GetChar:PROCRETURNS[CHAR]={c:CHAR;ignore:INT_0;IFNOTflushedTHENSendNow[];WHILEignore>=0DOmark:NAT_0;timingMark:NAT=5;timingMarkReply:NAT=6;dataMark:NAT=1;c_Stream.GetChar[stream!Stream.SSTChange=>{mark_sst;CONTINUE};];SELECTmarkFROM0=>NULL;dataMark=>{ignore_1};timingMark=>{ignore_1;Stream.SetSST[stream,timingMarkReply]};ENDCASE=>ignore_2;ignore_ignore-1;���qg/E�w_, y_,�_,8w_,"�y$0_,�_,$w'\_,�_,]y]�]~w]�yv]�]/w!]�][y][�[w[�y [�[ w#[�[Z5  X yX�X<wXb�uVwV�VyV�VwVy V�V!`w#V�V$�&�U?#S�yS�S;w S�SQuPHwPH�PHyPH�PHnwPHny" PH�PH"PH&w*~PH�PH+e�-J�N$cL�yL�L;w L�LKRuIwI�IyI�IqwIp�U�H F[DuC w?C �C y=C �C wC ��Ae ? > <n :u9w9�9y9�9w9��7xK5 4) 2 0 /2-y-�-w-�\�9�+y+�+w+�y+�+aw!+�+u*<w*<�*<y*<�*<Mw*<M�2/4�y6Z*<�*<7w9*<�*<:6�u(w(�(y(�((w("�y#-(�(#w&(�('m�)R�&y&�&yw&�&%Ey%E�%E<w%Eb�y##w#y#�#Xw#"d y!w!v O�y!!�!"j�w N'y3 N� Nw N,�' y5� w".�$'y"�#w%�'X'yX�XwX �"'�F� 8�5&<(-�.y1 � 1w7Q � 8�a8y'wy� Fw8�my�w B�k8x" '�(8 #b(V�)+ y t8w t:!&�' 'j�!;�"8�������i��������TVm$ ��������������������������������������������������������������������������������������������������������������������������3ENDLOOP;IFc='\177THEN{PutXXX[];ERRORDelHit};RETURN[c]};GetStringToSpace:PROC[string:LONGSTRING,stopper1:CHAR_',stopper2:CHAR_']={c:CHAR_GetChar[];dashCount:NAT_0;inComment:BOOLEAN_FALSE;commentHit:BOOLEAN_FALSE;string.length_0;UNTILstring.length=string.maxlengthOR(NOTinCommentAND(c=stopper1ORc=stopper2))ORc='\nDOIFc='H-100BORc='A-100BTHEN{IFcommentHitTHEN{PutXXX[];ERRORDelHit};IFstring.length>0THEN{IFechoTHENPutChar[c];string.length_string.length-1;};}ELSEIFc='W-100BTHEN{IFcommentHitTHEN{PutXXX[];ERRORDelHit};WHILEstring.length>0DOIFechoTHENPutChar['H-100B];string.length_string.length-1;ENDLOOP;}ELSE{IFechoTHENPutChar[c];IFc='-THEN{commentHit_TRUE;dashCount_dashCount+1;IFdashCount=2THEN{inComment_NOTinComment;dashCount_0;};}ELSE{WHILEdashCount>0DOIFNOTinCommentTHEN{string[string.length]_'-;string.length_string.length+1;};dashCount_dashCount-1;ENDLOOP;IFNOTinCommentTHEN{string[string.length]_c;string.length_string.length+1;};};};���qg/E�y_e'w_e�_ey]w]��y_]�]w]!$ y(]�])tw]-Qy\w\ZnuXwX�XyX�XwX"y'nX�X('X+^w/X�X0y6X�X7wX:�<%�=�=yCX�XDwXG�I\�XK�W��UxyUx�UxywUx� S yS�SiwSz�!R) y$R)�R)wR)#I�y$R)�R)%w(tR)�R)P yP�PCwP#�y%;P�P%w(P�PN �yM2wM2D !&�# yKwKJ�yK�KwKy"[K�K#/wK% y-K�K.m�wK/ yIwIJyI�I�H;'wH;NJ�Hy!H;�H;"�wH;#&y(^�)\y,H;�H;-wH;0�yF8wF y"F�F#wF& y.5F�F.wF2yD8wD "�#�y%+D�D%wD(�yCDIwCDy 7CD�CD wCD# AI #,�$ ,�-?I>N8�y<'[w< �!y%:<�<%w<(�y:8w: y":�:#w:& y.5:�:.w:2y9W8w9W %{�&�y'9W�9W(�7Iw7y 77�7 w7# +R�,O6I #,�$ ,�-y4`Iw 4`�4`28�y1'w1v�y/i8w/iy&/i�/iw/i! y-8w-��y9-�-w-"�,I #D�y$,�,%w',�,*sI":�#*�,y(Iw(#�%�y&(�('w(*�'#Z$�y&|'#�'#'ew'#) %|Z$K�%#Z"-I�y 8w �yIw&�'�y)�)�6Z6w6"y)6�6*Rw6-_�k+f�,k 'N�( 0�2?kZ$K�%,�-yZw"�yHIHwHy'H�H(AwH+M�Z)U�*Z %=�& .�0RZ I 8���������������TVm$^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������4c_GetChar[];ENDLOOP;IFstring.length<=string.maxlengthTHENsep_cELSEsep_';IFstring.length=0ANDsep#'\nTHEN{PutChar[sep];GetStringToSpace[string,stopper1,stopper2];};};GetStringToCR:PROC[string:LONGSTRING]={GetStringToSpace[string,'\n,'\n];};GetNumber:PROC[default:INT_1]RETURNS[value:INT_0]={string:LONGSTRING_[80];GetStringToSpace[string];FORi:NATIN[0..string.length)DOc:CHAR_string[i];IFcIN['0..'9]THEN{value_value*10+(c-'0)}ELSE{PutString["Notanumber!"];PutLine[];ERRORDelHit};ENDLOOP;IFstring.length=0THENvalue_default;};PutNumber:PROC[value:INT,w:INTEGER_4]={IFvalue<0THEN{PutChar['-];value_-value;w_w-1};IFvalue>=10THEN{PutNumber[value/10,w-1];value_valueMOD10;w_1};WHILEw>1DOPutChar['];w_w-1;ENDLOOP;PutChar['0+value];};Confirm:PROCRETURNS[yes:BOOLEAN]={response:LONGSTRING_[10];GetStringToSpace[response];IFString.Compare[response,"Yes",FALSE]=0THEN{RETURN[TRUE]}ELSEIFresponse.length=0ORUpper[response[0]]#'NTHEN{PutLine[];PutString["Sorry,youmustsayYesinjusttherightway."];PutLine[];RETURN[FALSE]}ELSEPutXXX[]};GetCommand:PROC={nMatches:NAT_0;matchLength:NAT_0;commandCode_illegal;PutString[">>"];GetStringToSpace[command];IFcommand.length=0THEN{PutLine[];GetCommand[]}���qg/E�w_,'�F� y]'w]�]y[w[ !5y+[�[,Pw[/\1�3^�y4}[�[57w[7:A�;�<�yZ5wZ5 � �y!Z5�Z5"wZ5$'T�)9y+Z5�Z5,FwZ5/R�X' V'&, U?'SuQ wQ�Qy}Q�Q$wQ!$y%Q�Q&Q)w.4Q�Q/�1��PH$';NuLwL�LyL�LwLy$L�L$wL&�(:y)L�L*wL/y4cL�L4wL6�8:�;�KRyeKR�KRKRUwKR"F�#IyHwHydH�HMH]wH4y(SH�H)8�wF['yF[�F[wF[�) yD'wD�yD�DW�wDyD�D wD#'�){-%�.Y0>�2#yC 'wC v "Y%*�&T - y4C �C 4wC 8yAe'wAe�Aey?w? � �y!?�?"rw?%)(�*>u<nw<n�<ny<n�<nw<ny#<n�<n#rw%<n�<n%y'<n�<n(Uw<n-�/<0�2�y:w:f��y:�:w: (,z�.2�4&�5y9w9fy9�9w9"04a8 �9y=A9�9>Rw7xG��Vy5w5v��-�yb5�5G�w4)'\2'��5��y0'w0�0/2-u+w+�+y+�+|+|w+"y%+�+&{w+b+�+,J�./�*<y4*<�*<*<$w*<$�%(y&w&&y*&�&+w.&�&/v�1[�y2&�&3Iw&6U�y%E'w%E�y%E�%Ew "%E�%E#'�y!!dw! #�%�y&!�!'�w!) 4�6y8!�!9bw!<n� O' '!$( *k-!.1q37"�' yX'wX�yX�Xw X�X'�y w dau w(�y%�w�!�y�w� Vk yk�kwk �"s � ) ty w  !+�#�y$D � $w ( /< ���������������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������5ELSE{FORcmd:CommandCodeIN[login..quit]DOcandidate:LONGSTRING_commandTable[cmd];IFcommand.length<=candidate.lengthTHEN{matchLength_0;FORi:NATIN[0..command.length)DOIFUpper[command[i]]=Upper[candidate[i]]THENmatchLength_i+1ELSEEXIT;ENDLOOP;IFmatchLength=command.lengthTHEN{commandCode_cmd;nMatches_nMatches+1;IFNOTloggedInTHENEXIT};};ENDLOOP;IFnMatches>1THENcommandCode_ambiguousELSEIFcommandCode<=quitTHEN{candidate:LONGSTRING_commandTable[commandCode];FORi:NATIN[command.length..candidate.length)DOPutChar[candidate[i]];ENDLOOP;};};};PutRequestStatus:PROC[request:PDQueue.Request,status:PDQueue.RequestStatus]={PutString[request.requestTime];PutChar['];PutString[request.fileName];IFrequest.copies#1THEN{PutString["("];PutNumber[request.copies,1];PutString["copies)"];};PutString["("];PutString[request.requestor];PutString[")"];SELECTstatusFROMcanceled=>PutString["Cancelled"];waiting=>PutString["Waiting"];printing=>PutString["Printing"];ENDCASE=>NULL;PutLine[];};DoCommand:PROC={GetCommand[];IFNOTloggedInANDcommandCode#loginANDcommandCode#quitTHEN{PutLine[];PutString["Loginfirst,please"];��qg/E�y_,w_,d�y]'w] y']�]'�w])^ y0]�]1�w[8 y[�[ [#w[(�*VyZ58wZ5 %M'y2%Z5�Z52wZ55�XI #�%4yVIwV7yV�V V"wV$hy1V�V1�U?ZwU?+)�-y9 U?�U?9wS- &�(yQZQ w#YQ�QyPIZw"PI�PIyNIwN %N�'3 y1N�N2ZwN5f�LZ &�(mKRZ#�%(+h�-MyIZIwI"y'I�I(xI+wHZF[IyD8wD�DyC 'wC � C�y!xC �C "1wC %= .�0QyAe'AevwAe %(9y+Ae�Ae+wAe.�?8 y?�? ?#w?(�*Vy>8w>&y>�>o> w>"V"y8>�>8�w<nIy:Iw :�:987x'5u4)w4)�4)y4)�4)Mw4)"L'32#]�%B�0/2K-y+w+ �!x�y"+�+#fw+&r�*<' Z(''&' Z#%E'# I! O ywy�xw�'WX''iy 'w )y � w" � b uw�y�jwi�!N�k ywyz� Mw" ,&�. y1�2\w4 >5�yww� u' '!%�������F��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������6PutLine[];}ELSE{SELECTcommandCodeFROMlogin=>{registryMissing:BOOLEAN_TRUE;PutString["--User--"];GetStringToSpace[user];FORi:NATDECREASINGIN[0..user.length)DOIFuser[i]='.THEN{registryMissing_FALSE;EXIT};ENDLOOP;IFregistryMissingTHEN{String.AppendString[user,defaultRegistry];PutString[defaultRegistry];};PutString["--Password--"];echo_FALSE;GetStringToSpace[password!UNWIND=>echo_TRUE];echo_TRUE;IFsep#'\nTHEN{PutString["--Account--"];GetStringToSpace[account];};PutString["--Authenticating..."];SendNow[];SELECTNameInfoDefs.Authenticate[user,password]FROMindividual=>{PutString["OK"];loggedIn_TRUE};allDown=>{PutString["allGVserversdown;I'llhavetotrustyou."];loggedIn_TRUE};badPwd=>{PutString["badpassword"];loggedIn_FALSE};ENDCASE=>{PutString["badname"];loggedIn_FALSE};PutLine[];IFloginMessage.length>0THEN{PutString[loginMessage];PutLine[];};};print=>{fileName:LONGSTRING_[80];separator:LONGSTRING_[80];time:LONGSTRING_[40];requestNumber:INT_0;createDate:LONGSTRING_[40];bytes:INT_0;copies:INT_1;IFNOTaccessAllowedTHEN{PutLine[];PutString["Sorry,youarenotallowedtoqueuerequestsatthistime"];};PutString["--File--"];��qg/E�w_,' ]'�y[w[d�yZ5'wZ5 y%Z5�Z5&9wX8J�VIy%GV�V&�wV+l�y,V�V-w0$V�VU?I "|'SIyQIwQ7yQ�Q Q" Q*wQ,y5Q�Q6�PHZwPH#$�% y&=PH�PH&wPH*48�y5PH�PH6~w9cPH�PHy:`PH�PH;w=PH�PH=�yNZw"N�NyLIwLy&uL�L'.wL*;�KRZ-XIZHZF[I "| *jDI�y D�D w#D�DC I,�y-C �C .uwC 3559�y:C �C ;Ww=C �C >-�AeI�y Ae�Ae w#HAe�Aey?Iw?e�!Jy#?�?$Ww?'c�>Z $ +<nZ:Z9I "|# -D.7xI y5Iw5 4y:5�5;w4)Z #&r27�y9^4)�4):w<4)�4)=:�2Z"%~.1y6 :N<u?0-!^%+�y-A0�0-w0m0�01�/2Z"%=/U 6<�y--w!-�-"{�y+Zw+#\%0 5U;�y<+�+=Vw@;+�+@�*<I y(Iw()y�*�y+(�(,w(/�&Z%EZ #Z!I O85�Iy!�"|%w*�,2�I y!���"n�%w�*�,$XIyX�XX"wX'�)VI y%�&w(+�) I y" � #W &w +�- bIyWb�bwb!�#sIy� [w"�$ yIw y(�)w,�kZ Z(!*-+/46d:?-  uZ I "|'9�������^��������TVm$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������7GetStringToSpace[fileName];IFsep#'\nTHEN{PutString["--Copies--"];copies_MIN[GetNumber[default:1],CARDINAL.LAST];};IFsep#'\nTHEN{PutString["--Title--"];GetStringToCR[separator];};bytes_PDRemoteStream.Lookup[fileName,createDate,user,password!PDRemoteStream.Error=>{PutLine[];PutString["Error:"];PutString[expl];PutLine[];GOTOBad;};];Time.AppendCurrent[time];requestNumber_PDQueue.QueueRequest[[fileName,time,user,password,separator,copies]];IFrequestNumber<0THEN{PutLine[];PutString["Printqueuefull,requestdenied."];PutLine[];GOTOBad;};PutLine[];PutString["Printrequest"];PutNumber[requestNumber,0];PutString["queuedfor"];PutString[fileName];PutString["of"];PutString[createDate];PutString["("];PutNumber[bytes];PutString["bytes)"];PutLine[];BEGINmsg:LONGSTRING_[160];String.AppendString[msg,"Versionof"];String.AppendString[msg,createDate];String.AppendString[msg,";"];String.AppendLongNumber[msg,bytes];String.AppendString[msg,"bytes."];PDQueue.LogMessage[msg,requestNumber];END;lastRequest_requestNumber;EXITSBad=>NULL};check=>{��qg/E�w_,Iy]Iw]e�!Jy$"]�]$w]'�[Z $ +Z5Z!�y#Z5�Z5$'w%yZ5�Z5%2y4Z5�Z55^w:Z5�yZ5;"w>Z5�Z5>j�XZyVIwVe�!Jy$"V�V$wV'�U?Z $)SZQZPHI� j6 > N"�LZ,-.�KRk Ik*HHkF[k yDkwD#PC kAeZ?I>I %"�&<<nm% ,y:Iw: &�'�y)2:�:)w:,�9Z 7xZ'|+.3W 5Z y4)Zw4)!?2Z0I /2I%k*?-I,+I "|'g)*<I(I "|$5&I%EI "|#I!I "| NI yIwZy �!o$w)�+%XZ-A34Z-A  Z-A.aZ1Z-A�.vZ.ykZwk�kI "�$+ yIw!y$�%sw tI 8����������������TVm$����������������������������������������������������������������������������������������������������������������������������������������8requestNumber:INT;action:PROC[request:PDQueue.Request,status:PDQueue.RequestStatus]={PutLine[];PutNumber[requestNumber,5];PutChar['];IFstatus=notFoundTHEN{PutString["notfound."];PutLine[];}ELSEPutRequestStatus[request,status];};PutString["--RequestNumber<"];IFlastRequest#-1THENPutNumber[lastRequest,1];PutString[">--"];lastRequest_requestNumber_GetNumber[default:lastRequest];IFrequestNumber=-1THENPutLine[]ELSEIFABS[requestNumber]>NAT.LASTTHENaction[[NIL,NIL,NIL,NIL,NIL,1],notFound]ELSEPDQueue.CheckRequest[requestNumber,action];};cancel=>{requestNumber:INT;PutString["--RequestNumber--"];requestNumber_GetNumber[default:-1];IFrequestNumber=-1THENPutLine[]ELSE{owner:LONGSTRING_[80];action:PROC[request:PDQueue.Request,status:PDQueue.RequestStatus]={IFstatus#notFoundTHEN{String.AppendString[owner,request.requestor];};};PDQueue.CheckRequest[requestNumber,action];PutLine[];IFPDQueue.CancelRequest[requestNumber].okTHEN{msg:LONGSTRING_[80];String.AppendString[msg,"Cancelledby"];String.AppendString[msg,user];PDQueue.LogMessage[msg,requestNumber,IFowner.length=0THENNILELSEowner];PutString["Printrequestcancelled."];}ELSE{PutString["Nosuchrequestinqueue."]};PutLine[];};};listQueue=>{action:PROC[requestNumber:CARDINAL,request:PDQueue.Request,status:PDQueue.RequestStatus]RETURNS���qg/E�w_,I y%_,�_,&w'_,�_,]Iy]�] w]#)35[+�-�Z6Z XZ.VZ#yU?ZwU?"�$y+*U?�U?+wU?.�Sk '#)Qk PIk�yNZwN 0LZKRI "|( yIIwI $E�&*y'I�I(wI+:HI $F[I "�$+ .�/D yC IwC  &�(y*\C �C +wC .!yAeIAeAe ?w"kAe�Ae" - �y.>Ae�Ae/'w0Ae�yAe1 Ae4tw?y v?�?!_w"?�y?"w$?�y?%>w'I?�y?'w)?�y?*w,?�?,i.Yy>Iw>#7<oI:8g�9 I y%9 �9 &w'9 �9 7xI "|(/C5I %"�&3uy4)Iw4) &�(y*\4)�4)+w4).!y2Iw2�0Zy"0�0"0%w0*�,p/3Zy!/3�/3"w/3%+D7*---�/�y+kw+!$�&y-;+�+-w+1��*<!|2(!|&k%FZ#6#Z y!Zw!'y:!�!;>w!>J� Oky" O� O# O&w O+�-6k/R 6d8_�k/RYk0 y:Y�Y;+�w > y*�+C.O0w4. k).a bk�yZw *k-2q4 Z lZI8b!� uIy u� u w u#y.7 u� u/w4n u� u5J (,Ry; � <���������������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������9[continue:BOOLEAN_TRUE]={PutNumber[requestNumber,5];PutChar['];PutRequestStatus[request,status];};PutLine[];IFPDQueue.GetSuspended[]THEN{PutString["***Printingissuspended***"];PutLine[];};PDQueue.EnumerateRequests[action];};messages=>{action:PROC[message:LONGSTRING]RETURNS[continue:BOOLEAN_TRUE]={IFMatch[message]THEN{PutString[message];PutLine[];};};key:LONGSTRING_[80];Match:PROC[message:LONGSTRING]RETURNS[BOOLEAN]={keyLength:CARDINAL_key.length;IFmessage.length<keyLengthTHENRETURN[FALSE];FORi:NATIN[0..message.length-key.length)DOj:CARDINAL_0;WHILEj#keyLengthANDUpper[message[i+j]]=key[j]DOj_j+1ENDLOOP;IFj=key.lengthTHENRETURN[TRUE];ENDLOOP;RETURN[FALSE];};IFsep#'\nTHEN{PutString["--matchingstring--"];GetStringToCR[key];FORi:NATIN[0..key.length)DOkey[i]_Upper[key[i]]ENDLOOP;};PutLine[];PDQueue.EnumerateMessages[action];};start=>{IFPDQueue.SetSuspended[FALSE].old=TRUETHEN{PDQueue.LogMessage["Printingstarted.",,user];};PutOK[];};stop=>{IFPDQueue.SetSuspended[TRUE].old=FALSETHEN{���qg/E�w_, y"_,�_,#Xw_,(�y*P_,�_,+ w-{_,�_,.c�0H�]Z.[Z#Z5Z-[XZVI yU?IwU?y-&U?�U?-wU?0�SZ %',.`5QZ PHZNI"LIKR8!�IIyI�I wI#y)I�I*oI-w2I�Iy2I�I3wI9 yHwH"@�y#H�H$w&H�H'�)�yF[ZwF[ y(F[�F[)wF[,�DkC k Aek?Z>IyX>�>>"Hw>':�(u<nIw4<n�<ny 2<n�<n w<n#y* <n�<n*<n-w2j<n�<ny3R<n�<n4&w<n9^�y9<n�<n:zw?a<n�<n:��9Z y$9�9%nw9+^�, y7xZw7x (f�)y0i7x�7x1#7x4/w7x9�y97x�7x:w=7x�7x=�y5Zw5 Hy!5�5"5$w5&yy85�59�w4)ky 4)�4)!w4)'�)y2kw2#�$�&y-h2�2.;w20=o�0 >y#0�0$�w/3!|�"d�#�$�&�y-!|w'-�-y+kw+! y)y+�+*2+->w+2�y3+�+3w69+�+6�y*<k(Zw("�y#*(�(#w&(�('+�&Zy%EIw%Ee�!Jy#%E�%E$Ww%E'c�#Z $ +~0G!Zy OZw O Hy! O� O" O$w O&yy/W O� O0=�w O15\�6 y-w#��ZYI I" Ib8H�yIwy+�,w/z�/2�y4�5<83w;�Z1AkZII u81�y Iw y+ � ,w/ � /k2,�y4 � 4 83w ;����������������TVm$����������������������������������������������10PDQueue.LogMessage["Printingsuspended.",,user];};PutOK[];};setLoginMessage=>{old:LONGSTRING_[160];String.Copy[old,loginMessage];PutChar['];GetStringToCR[loginMessage];loginMessage.length_MIN[loginMessage.length,loginMessage.maxlength-3-user.length];String.AppendString[loginMessage,"("];String.AppendString[loginMessage,user];String.AppendChar[loginMessage,')];PutLine[];PutString["Oldmessagewas:"];PutString[old];PutLine[];PDQueue.LogMessage[loginMessage];};reprint=>{ncopies:INT_0;confirm:BOOLEAN_TRUE;PutString["--Numberofcopies--"];ncopies_GetNumber[default:0];IFncopies>1THEN{PutString["--Confirmreprintofmultiplecopies--"];confirm_Confirm[];};IFconfirmTHEN{msg:LONGSTRING_[50];String.AppendString[msg,"Reprintrequestfor"];String.AppendLongDecimal[msg,ncopies];IFncopies=1THENString.AppendString[msg,"copy"]ELSEString.AppendString[msg,"copies"];PDQueue.LogMessage[msg,,user];PDQueue.Reprint[ncopies];PutOK[];}ELSEPutXXX[];};resetQueue=>{PutString["--Doyoureallywanttoresettheentirequeue?--"];IFConfirm[]THEN{PutOK[];PDQueue.Reset[];PDQueue.LogMessage["Queuereset",,user];};};help,illegal=>{PutLine[];���qg/Ew_,Z1A]Z[IZ5IX8#&f�VIy,V�VV"wV'�(U?I% SI!~QIPHI'�y)_PH�PH*pw+PH�PH,&N&LI!0�1KRI!0II0$HI F[I $*-6DIC I AeI!?I>8 _�<nIy <n�<n!!w<n#G�$:Iy :�:!w:'�y(:�:)Xw+:�:9I "|(*/7xI >�!.y5Iw5!�#�y$O5�5%w5(�4)Z $+/1Y6;2Z"�$ 0Zy/2Iw/2y"/2�/2"w/2%�-Zy -�-!o-$w-)�+%+Z-A37:*<Z1y(Zw(#�%�y'(�('w(*:�;y&Zw& 0�1%EZ#Z!Z OZ�yIw�IX8 k#��I "|%(,O/1Z47�: ybIwby#Eb�b#wb' �ZZkZ0e ZI u8 #L� I �������S��������TVm$����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������11PutString["Validcommandsare:"];FORcmd:CommandCodeIN[login..quit]DOcandidate:LONGSTRING_commandTable[cmd];PutString[candidate];IFcmd#quitTHENPutString[","];ENDLOOP;PutLine[];};quit=>{loggedIn_FALSE;PutLine[];SendNow[];quitting_TRUE};wait=>{requestNumber:INT_lastRequest;requestStatus:PDQueue.RequestStatus_waiting;action:PROC[request:PDQueue.Request,status:PDQueue.RequestStatus]={requestStatus_status;};toldUserThatItIsPrinting:BOOLEAN_FALSE;DoPrintingMsg:PROC={IFrequestStatus=printingANDNOTtoldUserThatItIsPrintingTHEN{PutString["Printing..."];toldUserThatItIsPrinting_TRUE;};};IFsep#'\nTHEN{PutString["--RequestNumber<"];IFlastRequest#-1THENPutNumber[lastRequest,1];PutString[">--"];lastRequest_requestNumber_GetNumber[default:lastRequest];};PutLine[];IFrequestNumberIN[0..NAT.LAST]THEN{PDQueue.CheckRequest[requestNumber,action];IFrequestStatus=waitingTHEN{PutString["Waiting..."];};DoPrintingMsg[];UNTILrequestStatus=notFoundORrequestStatus=canceledDOSendNow[];Process.Pause[Process.MsecToTicks[10000]];PDQueue.CheckRequest[requestNumber,action];DoPrintingMsg[];PutChar['.];ENDLOOP;PutString["Done."];PutLine[];};};ambiguous=>{��qg/Ew_,I%,/_y]Iw]7! y+]�],�w]- y4]�]5�w[Z y$ [�[$['w[,�.xZ5ZyXZwX"�#y&X�X'wX* 2+yVZw"V�VU?I SIQ8%�y&Q�Q'cw*HQ�Q+E 1 9a>�yPI w6PI�PI�N81�LI y%L�L&wL(+�) KRI $,3O�4IIyI�I wI#)35H+�-�F\Z %�'QDZC Iy*C �C +wC 1�y2C �C 3Yw6>C �C uAeI w$Ae�Aey%Ae�Ae&/wAe)/�+�y?Zw? 'k�)Py.?�?/f?1w>-y-Y>�>.w>1�<ok:k.�y0$:�:0w3P:�:9 k7xZy5Iw5e�!Jy#5�5$Ww5'c�4)Z $* y2Zw2 &V�(;y)2�2*w2-<0Z &1/3Z $�&< 0�1-- +Z*<I y(Iw( y&(�('3�w((y*b(�(+Kw,(�y(-/w0(�(y0(�(1w(4�&Z#6y%FZw%F 'k�)Py.$%F�%F.w%F1�#k!k OZyZw! )�+y2D�3 �w4x <��-y#���$�wYk k* k#8bkk ykw% �lZZ Z uI 8 3"��������n��������TVm$j��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������12PutLine[];PutString["Ambiguouscommand(typeHelp<CR>forhelp)"];PutLine[];};ENDCASE=>ERROR;};};stream.options.signalSSTChange_TRUE;PutLine[];PutString[helloMsg];PutLine[];UNTILloggedInORquittingDODoCommand[!DelHit=>CONTINUE]ENDLOOP;WHILEloggedInDODoCommand[!DelHit=>CONTINUE]ENDLOOP;EXITSQuit=>NULL;};END.��qg/Ew_,I ]I)V/3A:<Y[I Z6IyX8wX:y!X�X"w%X�XV'U@S&�y(nS�S)'w+S�SQ PJN yLwL3yL�L�wL"y$OL�L%5�wL& 04y7DL�L8w=~L�LyKTwxKT�KTyIwIey I�I�wIg (-y0I�I0w6OI�Iy76I�I7w<I�IyHwH yH�HwH�HF^yCw{C�C�������0��������TVm$���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--PeachSourcesTemp.df--Copyright(C)1984,XeroxCorporation.Allrightsreserved.--MichaelPlass,1-Oct-8413:07:12--PeachPDPrintServerSourcesExports[Ivy]<Plass>Peach>Top>ReleaseAs[Indigo]<Peach>Top>PeachSourcesTemp.df1-Oct-8413:09:20PDTExports[ivy]<Plass>Peach>Documentation>ReleaseAs[Indigo]<Peach>Documentation>PeachDoc.tioga!124-Sep-8411:26:07PDTPeachDoc.press!124-Sep-8411:26:16PDTExports[ivy]<Plass>Peach>PeachSources>ReleaseAs[Indigo]<Peach>PeachSources>PDBitBltTiming.mesa!14-Mar-8411:21:20PSTPDFileFormat.mesa!118-Nov-839:54:35PSTPDInterpBasic.mesa!14-Sep-8410:17:00PDTPDInterpBitmap.mesa!117-Nov-8312:15:22PSTPDInterpBitmapImpl.mesa!14-Sep-8411:30:44PDTPDInterpMainImpl.mesa!120-Sep-849:14:55PDTPDInterpOutput.mesa!120-Sep-849:03:31PDTPDInterpPage.mesa!120-Sep-848:58:46PDTPDInterpPageImpl.mesa!120-Sep-849:17:50PDTPDInterpReader.mesa!14-Sep-849:51:57PDTPDInterpReaderImpl.mesa!113-Sep-8411:35:11PDTPDInterpSysCalls.mesa!14-Sep-849:55:12PDTPDInterpSysCallsDevelImpl.mesa!130-Nov-8310:22:04PSTPDQueue.mesa!113-Sep-8413:18:40PDTPDQueueImpl.mesa!127-Sep-847:48:29PDTPDUser.mesa!14-Sep-8415:05:56PDTPDUserImpl.mesa!127-Sep-849:33:14PDTPDRemoteStream.mesa!17-Sep-8416:13:26PDTPDStrikeFormat.mesa!119-Sep-8413:13:14PDTPDTextBitmap.mesa!119-Sep-8411:30:08PDTPDTextBitmapImpl.mesa!126-Sep-8417:39:54PDTPDRemoteStreamStub.mesa!113-Sep-8413:41:44PDTPDChatServerStub.mesa!113-Sep-8411:34:55PDTPDInterpOutputViewerImpl.mesa!126-Sep-8417:22:14PDT��w_,Y],#! *,0[,y bZ6,.eV%,/S)/k5PJ,GNKT(.m4I(.4F^+DAh)/5e?)?05s>)@.4<r)x0?5:*069#*1 57|)o0_5H5(/44-)052)0150*4069/7)/4-*17+ ) /u5*A)05( (.4G&)40%5%K*06.#)a/5f!)/5 U*I06O+1s7 _)0I5+I17O���������������TVm$_��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� � TIMESROMAN������������� �LAUREL������������������ �GACHA������������������� � TIMESROMAN������������� � TIMESROMAN��������������� TIMESROMAN��������������LAUREL������������������� TIMESROMAN��������������� TIMESROMAN�������������� TIMESROMAN����������Y���� HELVETICA����������������LOGO��������������������� HELVETICA����������������� HELVETICA�����������������������������������������������������������������������������������h���������������i������������������!�����'�����(�����+�����2��*���9�����>�����E��&���L��8���S�����[�����b��m���i�����p�����w�����|�����}��S���������������&��������������� ����������[�����a����������������������������������������-�����{�����c�����3���������������}��������� ��������:����G����_��������P��#����*����1����8����>����D��w��J��o��Q��Q��W��B��^��`��e����l����m��S��p��N��w��s��}��w��������������������A����'����$��������c�������� ����=������������J��������D����������������^����v��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������j/�_���kp��0[ivy]<Plass>Peach>Documentation>PeachDoc.tioga!1�����������������������������������#Monday, October 1, 1984 1:28 pm PDT����������������������������������������������������������������������������������������������������������������������������������������