1
0
mirror of synced 2026-01-15 00:12:24 +00:00
Interlisp.medley/docs/internal/STREAMS-KOTO.PRESS

417 lines
118 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

StreamsandFileDevicesEdited30Nov84,vanMelleAnInterlispStreamisanobjectofdatatypeSTREAMthatiscapableofperforming,attheleast,sequentialinputand/oroutputofbytes.Somestreamscandomuchmore.Streamsareusedforaccesstoopenfiles,forwritingtothedisplay,forchattingtoremotehosts,andwhateverotherusespeoplecomeupwith.Thisdocumentdescribeshowonegoesaboutdefininganewdevice,themeaningsoftherecordfieldsoftheSTREAMandFDEVdatatypes,andanythingelsethatseemedrelevantatthetime.TheimplementationofStreamsisstronglyobject-oriented.EverySTREAMhasapointertoadevice(thedatatypeFDEV),whichcontainsavectoroffunctionstobecalledwhencertainoperationsarerequiredofthestream.Therecanbemanystreamswiththesamedevice.Intheobject-orientedtermsofLOOPS,onecanthinkofthedeviceasaclass,whichprovidesasetofmethodsthatimplementclassoperations,andthestreamsasinstances.Devicesandstreamsalsohavelocalstate,whichmightbethoughtofasclassandinstancevariables.DeclarationsforSTREAMandFDEVcanbeobtainedbyloadingEXPORTS.ALL.OPENSTREAM,CLOSEF,FORCEOUTPUT,READP,EOFP,GETEOFPTR,GETFILEINFO,SETFILEINFO,DIRECTORY,COPYBYTES,DELFILE,RENAMEFILE,FULLNAMEaresomeoftheLispfunctionscalledbytheprogrammerthatultimatelyturnintooperationsatthedevicelevel.Thedescriptionsthatfollowsometimesalludetothesefunctions,andknowledgeofhowtheyoperatemayoccasionallygivethereaderadditionalcluesastohowthedeviceoperationswork.Typically,somepartoftheoperationishandledbythe``generic''filesystemcode,whichthencallsonthedevicetohandlethatpartoftheoperationthatisdevice-specific.Forexample,thefunctionOPENFILEtakesthenameofthefileitistoopenandfillsinhostanddirectorydefaults,anddecideswhichdevicehandlessuchafile.Itthencallsontheparticulardevicetoactuallyopenthefile.Afterthefileisopened,thegenericfilesystemcoderegistersthefileon(OPENP).Asanotherexample,operationsinvolvingopenstreamsfirstcoercenon-streams(e.g.filenames)toopenstreamsbeforecallingthedevice-specificoperation.DevicesAdeviceisanobjectoftypeFDEV(sonamedforhistoricalreasons:``FileDevice'').Thestandardwaytodefineanewdeviceistocreatesuchanobject,byperforming(createFDEV--),andthenpassthenewlycreatedFDEVtothefunction\DEFINEDEVICE.\DEFINEDEVICEisthewayadevice``announces''itselftothegenericfilesystem.(\DEFINEDEVICENAMEDEV)[Function]InstallsdeviceDEV,givingitthenameNAME.NAMEmustbeanuppercaselitatom.Thegenericfilesystemcodemakesuseofthenametolocatethedevicethatiswillingtodealwithfileswhosefullnamebegins{NAME}.Itispermissibletohavemorethanonenamemaptothesamedevice;thiseffectivelyprovidesdevicesynonyms.Devicesareencouraged,however,toalwayscreatefilenamesusingthecanonicaldevicename,independentofwhatnamewaspassedin.NAMEcanbeNIL,inwhichcasethegenericfilesystemcodeneverconsultsthedevicedirectly.However,itsEVENTFNisstillrunaroundLispexits,anditcanbeusedasthedeviceforastreamcreatedbynonstandardmethods.
<EFBFBD>q?<3F>`<60> <0C><00>p<>
<EFBFBD>q?<3F>`<60><10><00><00>
<EFBFBD><EFBFBD>g_p<EFBFBD><1C><>aoq<06>&*<02>*<2A><03>/I<06>7|<7C>aor<6F>ao<61>7<EFBFBD><37>ao<61> <09><>]<5D>s<05>
[<01><0E><02> <02><12><02><14><04>c<>]<5D><> <09><>Zar<01> D<08><11><05>e<01><17><01><19><05><1D><01><1F><07>%<11>%<11>Zat<61>Za<05>*<1B>Zar<61>Za<5A>*<2A><03>-i<01>.<2E><06>3<EFBFBD><01>5<EFBFBD>
<EFBFBD>=<01>><3E><02>@<40><05>Dr <09>J<EFBFBD><4A>J<EFBFBD><4A>Za<5A> <09><>X<EFBFBD><04>
u<05><11><05>:<01><17><05><1B><><1B><03><1F><06>$g<02>&<26><01>(<28><03>,Y<04>0<1B>0z<06>5<EFBFBD><02>7<EFBFBD><03>:<3A><02><<3C><05>@<40><01>BK<03>E<EFBFBD><05>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>X<EFBFBD><58> <09><>V<EFBFBD><06><0E><01>r<02><12><07><17><02>H<07><1F><01>!W<05>& <05>)<29><02>,<2C><07>2<EFBFBD><04>6R<03>9[<05>=<3D><03>A<EFBFBD><01>C<EFBFBD><04>GA<47>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>V<EFBFBD><56> <09><>T<EFBFBD><07>o<08>f<02>|<02>:<03>f<04>#X<07>(<28><00>*<02>-<06>1<EFBFBD><02>43<07>:a<01><-<02>><3E><05>B<EFBFBD><05>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>T<EFBFBD><54> <09><>S0t<05><0E><>S0r<30>S0<53>V<02><11><><11><>S0t<30>S0<03>;<3B>S0r<30>S0<53><15> <09><1B><02>W<07>#<23><03>&^<03>(<28><05>-<2D><07>2<EFBFBD><01>43<02>6d<04>9_<39>S0<53> <09><>O<EFBFBD><02> <0C>
<EFBFBD><16><01>t<06><1D><01>&<07>$m<0F>.?<3F>.<2E><04>2<EFBFBD><32>2<EFBFBD><32>O<EFBFBD>t<EFBFBD>O<EFBFBD><05>7<EFBFBD><37>O<EFBFBD>r<EFBFBD>O<EFBFBD><4F>8d<02>:<3A><00><<06>@<40><01>B<EFBFBD><00>C<EFBFBD><05>H<03>J<EFBFBD><4A>J<EFBFBD><4A>O<EFBFBD><4F> <09><>M<EFBFBD><07>a<>a<>M<EFBFBD>t<EFBFBD>M<EFBFBD><03><12><>M<EFBFBD>r<EFBFBD>M<EFBFBD><01><13><04><17><07> <00>+<05>"-<01>#<23><08>)<29><01>+.<01>-<05>0<EFBFBD><03>4i<06>8<EFBFBD> <09>?V<02>A<EFBFBD><07>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>M<EFBFBD><4D> <09><>L<06><0E><>1<04>*<02><15><01><17><03>Z<06> F<03>#W<02>%<25><03>)%<06>-<2D><>.5<01>/<2F><02>2U<0E>;<3B><04>?<3F><01>A4<41>A4<41>Ls<>L<04>D<EFBFBD><44>Lr<>L<00>E<EFBFBD><02>Hd<02>J<EFBFBD><4A>J<EFBFBD><4A>L<10> <09><>JF<04>
e<01><0E><02>(<05>@<01><16><00><17><><17><>JFu<46>JF<04>y<>JFr<46>JF<00>-<04>
<07>$n<00>%n<02>'a<01>(<28><>(<28><>JFu<46>JF<06>-<2D><>JFr<46>JF<4A>. <03>0<EFBFBD><08>7a<04>:f
<EFBFBD>A;<02>C<EFBFBD><02>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>JF<4A> <09><>Hi<01> <0B><> <0B><>Hiu<69>Hi<08><10><>Hir<69>Hi<00><11><>z<06><17><02>w<06>~<03>"]<03>%<25><04>)<05>,<2C><04>0<EFBFBD><04>4<EFBFBD><01>6<EFBFBD><06><<01>=<3D><01>?<3F><04>B<EFBFBD><02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>Hi<48> <09><>F<EFBFBD> <09><0F><>, <0B><17><02><19><><19><>F<EFBFBD>t<EFBFBD>F<EFBFBD><05><1E><>F<EFBFBD>r<EFBFBD>F<EFBFBD><46>V<02>!<21><>!<21><>F<EFBFBD>t<EFBFBD>F<EFBFBD><03>%;<3B>F<EFBFBD>r<EFBFBD>F<EFBFBD><46>%<25><02>'<27><01>)<29><07>/1<01>0<EFBFBD><06>5<EFBFBD><35>5<EFBFBD><35>F<EFBFBD>t<EFBFBD>F<EFBFBD>
<EFBFBD>><3E><>F<EFBFBD>r<EFBFBD>F<EFBFBD><00>?P<>F<EFBFBD><46> <09><>Ct <09>Z<>Cr<>C<00>y<>y<>Ct<>C<05><18><>Cr<>C<00><19><><19><>Ct<>C
<EFBFBD>"<22><>Cr<>C<00>#<23><>#<23><>Ct<>C<04>(1<>Cr<>C<00>)P<>)P<>Ct<>C<03>,<2C><>Cr<>C<00>-<2D><>-<2D><>Ct<>C<08>5Z<35>Cr<>C<00>6y<36>6y<36>Ct<>C
<EFBFBD>?<3F><>Cr<>C<00>@<40><>@<40><>Ct<>C
<EFBFBD>J<12>Cr<>C<00>J<EFBFBD><4A>J<EFBFBD><4A>C<12> <09><>A?t<08><11><>A?r<>A?<00>b<>b<>A?t<>A?<08><19><>A?r<>A?<00><1A><><1A><>A?t<>A?<06> <20><>A?r<>A?<00>!<21><>!<21><>A?t<>A? <09>)<29><>A?r<>A?<00>*<2A><>*<2A><>A?t<>A?<07>1<EFBFBD><31>A?r<>A?<3F>2<02>4k<03>7<EFBFBD><01>9<EFBFBD><02><<03>?3<08>E-<05>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>A?<3F> <09><>?l<02> <0C> <09><14><03><17> <09>L<03>!<21><03>$<24> <09>+s<01>-D<02>/<2F><05>4S<05>8%<25>8<EFBFBD><02>;<3B> <0B>C<EFBFBD><03>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>?l<> <09><>=<3D><08><10><05><14><01><04>
<09> ^<02>#<08>)<29><01>+<2B><02>.<2E><03>1<EFBFBD><06>6<EFBFBD><02>9<EFBFBD> <0B>AZ<03>DJ<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>=<3D><> <09><>;<3B> <09>6<04>y<01><14><01>z<02>O<02><1B><05><1F> <09>&<04>)`<60>;<3B><> <09><>8g <09>><03><13><03><16><01>\<02><1A><08> <20><01>"<<06>'<27><01>)x<02>+<2B>
<EFBFBD>1<EFBFBD><03>4U<05>8<EFBFBD><04><b<04>@h<03>C<EFBFBD><04>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>8g<38> <09><>6<EFBFBD><05><01><0F><05><13><03><16><03>S<01><1A><02><08>#<03>%<25><01>'<0F>0O<30>0<EFBFBD><02>30<07>8<EFBFBD><02>;<07>@]<5D>@]<5D>6<EFBFBD>t<EFBFBD>6<EFBFBD><07>G<15>6<EFBFBD>r<EFBFBD>6<EFBFBD><36>Gs<04>J<EFBFBD><4A>J<EFBFBD><4A>6<EFBFBD><36> <09><>4<EFBFBD><02> &<03><0F><01>E<02>x<03><15><01><16><01><01><19><03><1C><02>m<04>!<21><01>#k<03>&6<02>(<28><08>.a<08>3<EFBFBD><02>6@<06>:<3A><04>><3E><05>B<EFBFBD><06>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>4<EFBFBD><34> <09><>3<00> <04>
<EFBFBD><EFBFBD><01>s<03>}<04>p<01>\<02><19> <09><1F><05>#<23><01>%r<07>*j<03>-<2D><02>0<04>2<EFBFBD><32>3<04>6<EFBFBD><02>8<EFBFBD><03>;+<01><}<06>A<EFBFBD><02>C<EFBFBD><06>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>3<00> <09><>16<05><03><11><08>F<02><19><03>/<01>F<>F<>16t<36>16<06>$'<27>16r<36>16<00>%<15>%<25><01>'<27><06>,<2C><07>2<EFBFBD> <09>9<08>?<3F><03>C<06>H<04>J<EFBFBD><4A>J<EFBFBD><4A>16<31> <09><>/c<05>
<EFBFBD><15><04>` <09><1E><01> P<03>#<23><06>(X<05>,w<06>0<EFBFBD><02>2<EFBFBD><0E>;<3B> <09>A<EFBFBD><41>/c<> <09><>*<2A>v<06>j<>*<2A>r<EFBFBD>*<2A><>p<>*<2A><> <09><>'/<00> <0B><05><0F><01>,<01><05>0<01><18><03><1B><><1B><>'/t<>'/<03>R<>'/r<>'/<2F><1F><02>"<04>&<26><02>(<28> <09>.<2E><07>4<05>7<EFBFBD> <09>=<3D><>>*<02>A<07>F<EFBFBD><02>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>'/<2F> <09><>%\<05> <00><02><11><05><01>R<01><18><05><1C><03><1F><01>!<21><06>%<25><01>'<27> <09>.<2E><>.<2E><>%\t<>%\<00>/<2F><>%\w<>%\<05>4R<34>%\r<>%\<5C>4<EFBFBD><34>4<EFBFBD><34>%\t<>%\<03>8<EFBFBD><02>;~<7E>%\r<>%\<00><<<02>><3E><03>A<EFBFBD><03>D<EFBFBD><02>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>%\<5C> <09><>#t<06><0E><><0E><>#tt<74>#t<03><11><>#tr<74>#t<>U<01><13><02><07>k<>k<>#tt<74>#t <0C>&V<>#tr<74>#t<00>'<0F>'q<>'q<>#tt<74>#t <0C>2\<5C>#tr<74>#t<>2<EFBFBD><01>4<02>6A<02>8<EFBFBD><00>9<EFBFBD><05>> <0C>F<05>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>#t<> <09><>!<21><02> %<06><10><03><12><06>H<>!<21><> <09><>0t
<EFBFBD><16><><16><>0x<30>0<03><05>0t<30>0<><1A><><1A><>0x<30>0<02>D<>0t<30>0<00><1B>0r<30>0<>DL <09>Ob<4F>0<><10><>C<07>/<05>`<60>`<60>Cx<43>C<02><1B><>Cr<43>C<00><1C><05> <20><01>!<21><02>$7<03>'<27><>'<27><>Cx<43>C<03>+^<5E>Cr<43>C<00>,*<2A>,<2C><>,<2C><>Cx<43>C<03>0<17>Cr<43>C<>0<EFBFBD><03>3<EFBFBD><01>5<EFBFBD><01>7<EFBFBD><08>=<3D><07>B<EFBFBD><42>Cc<02>F)<06>J<EFBFBD><4A>J<EFBFBD><4A>C<><10><>y<03><12><05>:<03>b<04>|<02> <20><01>"q<02>$<24><03>(V<01>)<29><05>-<2D><02>0<05>4'<03>6<EFBFBD><01>8&<06><<3C><01>><03>@<40><03>C<EFBFBD><04>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>y<><10><><17><03><12><03><16><05><1A><00><1B><><17>x<EFBFBD><17><03><1E><><17>r<EFBFBD><17><01> i<> <20><01>".<01>#~
<EFBFBD>*<2A><01>,*<03>/S<03>2<EFBFBD><03>5<EFBFBD><02>8`<03><<02>?<01>@<40><02>B<EFBFBD><03>F4<06>J<EFBFBD><4A>J<EFBFBD><4A><17><><10><><15><03>
<EFBFBD><19><07><05>#,<08>)<29><>*4<06>/8<02>1s
<EFBFBD>9<07>><3E><01>@V<05>D<EFBFBD><05>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A><15><><10><><04><14><04> <02>Q<08> 1<05>$E<04>(.
<EFBFBD>/<2F><01>1t<03>4<EFBFBD><03>83<02>:<3A><05>><3E><02>@l<><1B><10><>7x<03> <09>7r<37>7<><14><02><01><18><><18><>7t<37>7<02>~<7E>7r<37>7<00>V<01><1D><04>"<03>$<24><02>'C<06>,<03>.e<05>2<EFBFBD><03>6<04>9<EFBFBD><07>?<02>Am<05>E<EFBFBD><08>J<EFBFBD><4A>K<1A>K<1A>7<><10><>d<07><16><02>h<>h<>dt<64>d<06>I<>dr<64>d<><1E><01> <04>"<22><02>%<05>)<29><03>,<2C><05>0<02>2<EFBFBD><01>3<EFBFBD><02>6W<01>8-<03>;M<01><<3C><02>?&<05>CN<02>Ep<00>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>d<><10><>
<EFBFBD><06>*<01><16>
<EFBFBD><1E><07>$ <0B>
<EFBFBD>
<EFBFBD>
<EFBFBD>q?<3F>`<60>2Ifadeviceneverwantstobeinvokedbyname,andhasnointerestingEVENTFNorHOSTNAMEPmethods,thenthereisnoneedtoeverregisteritwith\DEFINEDEVICE.(\REMOVEDEVICEDEV)[Function]RemovesdeviceDEVfromthelistofknowndevices,aswellasanynamethatmapstothatdevice.(\GETDEVICEFROMNAMENAMENOERRORDONTCREATE)[Function]ReturnsthedeviceassociatedwithNAME.NAMEcanbealitatomorstring;itiscoercedtouppercase,andifitbeginswithanopenbrace,isassumedtobeafilename,fromwhichthehostnameisextracted.Ifnosuchdeviceisknown,attemptstofindonebypollingtheHOSTNAMEPmethodsofallknowndevices(seebelow);ifadeviceisstillnotfound,causesaFILENOTFOUNDerrorunlessNOERRORistrue.IfDONTCREATEistrue,itneverattemptstocreateadevice,justreturnsanexistingdeviceifthereisone,NILotherwise.ThefieldsofanFDEVaredividedupintoinformationalfieldsand``methods''.DEVICENAMEApointerfield,thenameofthedevice,standardlyalitatom.Useofthisfieldislargelyuptothedevice,butitisusuallyselectedtobethenamethatappearsinsidebracesinfilenamesopenedonthisdevice.Fordevicesthatdonotsupportthenotionofnamedfiles,DEVICENAMEcanbeanythingthattheimplementorcarestousefordebuggingassistance.RESETABLEAflag,trueif(SETFILEPTRstream0)canbeperformed.Currentlyunused.RANDOMACCESSPTrueifthestreamisrandomlyaccessable,i.e.,ifSETFILEPTRworksonthiskindofstream.NODIRECTORIESTrueiffilesopenedonthisdevicedonot(usually)haveadirectoryaspartoftheirname.TheprincipaluseforthisisbytheCONNcommand,whichwillnottrytoconnecttotheuser'shomedirectoryifgivenahostonly,e.g.,CONN{DSK}.BUFFEREDTrueifstreamsofthissortarebufferedinamannercompatiblewiththemicrocodedversionsofBINandBOUT.Morespecifically,BUFFEREDimpliesthatthedeviceimplementstheGETNEXTBUFFERmethod.Seedescriptionofbufferedstreams.PAGEMAPPEDTrueifthisstreamisimplementedbythepagemappedfunctions.Allpagemappedstreamsarealsobuffered,soifthisflagistrue,soshouldbeBUFFERED.Seedescriptionofpagemappedstreams.FDBINABLETrueifstreamsonthisdeviceobeytherulesformicrocodedBINwheneversuchstreamisopenforinputaccess.FDBOUTABLETrueifstreamsonthisdeviceobeytherulesformicrocodedBOUTwheneversuchstreamisopenforoutputaccess.Currentlyunused,asthespecneedsrevision.FDEXTENDABLESpecialkindofFDBOUTABLE.Currentlyunused,asthespecneedsrevision.DEVICEINFOApointertoarbitrarydevice-specificinformation.Thestandarduseforthisistoholdlocalstatespecifictooneofseveralsimilardevicesthatsharemethods.Forexample,<00>$ <0B>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<00>
<EFBFBD><EFBFBD>hs<EFBFBD><10><>br<01><11><00><05>B<04><1A><04><1E><01> [<01>"7<06>'_<01>)F<04>-H<02>/<2F><02>2J<01>4;
<EFBFBD>:<3A><>:<3A><>bt<>b<06>@<40><>br<>b<01>A,<01>B<EFBFBD><42>B<EFBFBD><42>bt<>b<08>Jj<4A>br<>b<01>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`.<07>G<03>><04><1C><01><1D><01><1F><03>"<22><01>$\<03>'2<07>+<2B><01>-<03>/<2F><>/<2F><>`.t<>`. <0C>:<3A><>`.r<>`.<00>;;<3B>`.<2E> <09><>\<5C>t
<EFBFBD><16><><16><>\<5C>x<EFBFBD>\<5C><02><18><>\<5C>t<EFBFBD>\<5C><00><19><>\<5C>r<EFBFBD>\<5C><>DL <09>Ob<4F>\<5C><><10><>Y<EFBFBD><06>R<05>f<>f<>Y<EFBFBD>x<EFBFBD>Y<EFBFBD><02><1C><>Y<EFBFBD>r<EFBFBD>Y<EFBFBD><59>&<03> ^<02>"<22><03>$<24><01>&(<04>*}<07>/m<01>0<EFBFBD><03>3<EFBFBD><01>5-<02>7<EFBFBD><03>;1<03>=<3D><03>A@<01>B<EFBFBD><03>E_<06>Ix<49>Y<EFBFBD><59> <09><>VVt<12><1A><><1A><>VVx<56>VV<03>8<>VVt<56>VV<56><0F><0F>VVx<56>VV<06>$<24><>VVt<56>VV<56>%<25><>%<25><>VVx<56>VV <09>-<2D><>VVt<56>VV<00>.W<>VVr<56>VV<56>DL <09>Ob<4F>VV<56><10><>Si<06><15><02>u<05><1C> <09>#n<03>&<26><>&<26><>Six<69>Si<03>*'<27>Sir<69>Si<00>+,<2C>+<2B><>+<2B><>Six<69>Si<03>/R<>Sir<69>Si<53>0<02>2<EFBFBD><01>4<EFBFBD><00>6<06>:<3A><01><<3C><06>AV<01>B<EFBFBD><01>Dh<06>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>Si<53><10><>Q<EFBFBD> <09>;<02><19><01>&<01>e<05> <20><03>#<23><01>%x<03>(<28><05>,<2C><01>.<06>3<EFBFBD><01>5+<01>7<00>8<03>:k<04>>k<03>A<EFBFBD><04>E<EFBFBD><02>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>Q<EFBFBD><51><10><>O<EFBFBD><03>E<01><15> <09><1B><>S<01><1D><01><1F><03>"<22><05>'#<01>(<28><05>-U<07>2<EFBFBD><01>4{<03>7]<02>9<EFBFBD><01>;<3B><06>@<40><02>B<EFBFBD><42>B<EFBFBD><42>O<EFBFBD>t<EFBFBD>O<EFBFBD><08>Ji<4A>O<EFBFBD>r<EFBFBD>O<EFBFBD><4F>J<EFBFBD><4A>J<EFBFBD><4A>O<EFBFBD><4F><10><>N<06>5<01><02>
<04><1E><06>#<23><03>&l<06>+<2B><01>,<2C><00>.<<05>2<EFBFBD><01>4<04>6<EFBFBD><02>9]<05>=<3D><05>B(<00>Ck<43>Ck<43>Nt<>N<03>G<EFBFBD><02>K@<40>K@<40>N<02><10><>L/<04><14><>L/r<>L/<2F>+<04>}<05><1C><><1C><>L/x<>L/<06>"4<>L/r<>L/<2F>"<22><01>#<23><04>'<04>'k<01>(<28><>(<28><>L/x<>L/ <09>0<EFBFBD><30>L/r<>L/<2F>1<01>2j<04>5<EFBFBD><01>6<EFBFBD><04>:i<07>?<3F><01>Ag<05>EI<00>FU<06>J<EFBFBD><4A>J<EFBFBD><4A>L/<2F><10><>J\<03><06><17><01>I<07>"<05>"6<01>#i<04>&<26><01>(<03>*<2A><>*<2A><>J\t<>J\<02>-[<5B>J\r<>J\<5C>-<2D> <09>3<EFBFBD><33>J\<5C> <09><>F<EFBFBD><02> <0C><05>!<01><11><01>o<>o<>F<EFBFBD>t<EFBFBD>F<EFBFBD><03><16><>F<EFBFBD>r<EFBFBD>F<EFBFBD><46>#<02>I<06> <01><1F><03>"<22> <0C>*<2A><05>.x<02>1 <0B>7<EFBFBD><37>F<EFBFBD><46> <09><>Cht <09>Z<>Chr<68>Ch<43>/<00><18><06>5<05> <20><02>"<22><03>&i<01>'<27><02>*5<06>.<2E> <09>5.<00>64<07>;<13>;s<02>><01>?<3F><03>B)<04>E1<01>Fw<06>J<EFBFBD><4A>J<EFBFBD><4A>Ch<43>/<2F>A<EFBFBD><01>,<01><1A><02>
<06>!<21><02>#<23><01>%<<01>&<26><06>++<07>0?<01>1<EFBFBD><01>3<EFBFBD><02>5<EFBFBD><03>9<EFBFBD><03><\<06>AO<05>E8<05>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>A<EFBFBD><41>/<2F>?<3F><08>6<05>!<21><01>#<23><03>&a<06>*<2A><>+E<02>-<2D><06>2z<03>5*<01>7<02>9j<06>>T<02>@<40><05>D<EFBFBD><01>Fj<04>J<EFBFBD><4A>J<EFBFBD><4A>?<3F><>/<2F>><05>k<>k<>>t<>> <09>"<22><>>r<>><01>#N<02>%<25><01>'<27><07>-]<03>0!<02>2w
<EFBFBD>:<3A><04>=<3D><01>?<3F><02>B<02>D;<08>J<EFBFBD><4A>J<EFBFBD><4A>><01>/<2F><.
<EFBFBD><1D><><1D><><.<2E> <09><>8<EFBFBD>t<08><11><>8<EFBFBD>r<EFBFBD>8<EFBFBD><38>/<00><18><04>n<03>#<01>V<>V<>8<EFBFBD>t<EFBFBD>8<EFBFBD>
<EFBFBD>(<28><>8<EFBFBD>r<EFBFBD>8<EFBFBD><38>(<28><05>-,<2C>-,<2C>8<EFBFBD>t<EFBFBD>8<EFBFBD><01>.<2E><>8<EFBFBD>r<EFBFBD>8<EFBFBD><38>/2<02>1<EFBFBD><01>3R <09>:;<3B>:<3A><08>@<40><06>E?<3F>8<EFBFBD><38> <09><>5Ct <0C><14><>5Cr<43>5C<35>/<03><1A><01><1B><02>.<05>"<22><01>#<23><07>*
<EFBFBD>0<EFBFBD><04>3s<01>4<EFBFBD><34>4<EFBFBD><34>5Ct<43>5C <09>=1<>5Cr<43>5C<35>=<3D><04>A<EFBFBD><01>C<EFBFBD><03>F6<03>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>5C<35>/<2F>3p<06>u<>3p<33> <09><>/<2F>t <0C><14><>/<2F>r<EFBFBD>/<2F><>/<03><1A><01><1B><04><1E><05>#<23><01>%<25><03>(<28><05>,<2C><01>.<2E><02>1R<08>6<EFBFBD><03>:G<00>;x<08>AL<01>C<03>E<EFBFBD><01>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><>/<2F>.,<04>h<><02> <08>$<24><02>'<27><02>)<29><03>,<2C><01>.9<01>0X<02>2<EFBFBD><32>2<EFBFBD><32>.,t<>.,<03>66<36>.,r<>.,<2C>6<EFBFBD><07>=<3D><04>A<EFBFBD><03>D<EFBFBD><02>GH<02>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>.,<2C>/<2F>,Y<06><01><1D><02><1F><05>#l<03>'<08>,<2C><01>-<2D><04>1i<00>2f<03>50<04>8r<04>;%<25>;%<25>,Yt<59>,Y<03>?X<04>C<EFBFBD><43>,Yr<59>,Y<00>C<EFBFBD><43>,Y<> <09><>(<28>t<07><10><>(<28>r<EFBFBD>(<28><>/<03>|<01><1B><06> <20><01>"a<03>$<24><03>'<27><02>)<29><07>/m<01>1<00>2+<05>7' <09>>$<03>A0<02>C<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>(<28><>/<2F>' <07><1C><01>{<7B>{<7B>' t<>' <02>!<00>' r<>' <0C>!<21><02>$<24><>$<24><>' t<>' <03>'<27><>' r<>' <00>(<28><>)<29><03>-r <0C>4<EFBFBD><34>4<EFBFBD><34>' t<>' <07>;<3B><>' r<>' <0C><P<06>A9<03>D+<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>' <0C>/<2F>%9 <09>e<02> <20><> <20><>%9t<39>%9 <0C>+<2B><>%9r<39>%9<>+<2B><06>1
<EFBFBD>1b<02>3<EFBFBD>
<EFBFBD>:<3A><01><2<07>A<EFBFBD><07>Ff<46>%9<> <09><>!<21>t <09>Z<>!<21>r<EFBFBD>!<21><>/<03><1A><01><03><1E><05>#1<01>$<24>
<EFBFBD>-<01>/<02>1{ <09>9<EFBFBD> <09>?<3F><>@<40><02>B<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>!<21><>/<2F><1F><06>b<02><1E><03>"<08>(1<01>*4<01>+<2B><03>.<2E><03>1<EFBFBD><01>3W<04>6<EFBFBD><01>8<EFBFBD><05>=<3D><01>?<3F><>?<3F><><1F>t<EFBFBD><1F><07>Fw<46><1F>r<EFBFBD><1F><00>G<EFBFBD><47>HY<02>J<EFBFBD><4A>J<EFBFBD><4A><1F><>/<2F>
<EFBFBD> <01><1F> <09>'t<07>,><3E><19> <09><><1A>t<08><11><><1A>r<EFBFBD><1A><>/<03>]<01><1B><06> W<01>"1<03>$<24><05>(<28><03>+<2B><02>.<04>1H<02>3X <09>:<3A><>:<3A><><1A>t<EFBFBD><1A><02>=<1F><1A>r<EFBFBD><1A><>=x<07>C}<03>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A><1A><>/<2F><18><01>m<03><1B><02><1D><04>!9<06>%<1C><18><> <09><>dt <09>Z<>dr<64>d<>/<03><1A><01><06>!"<01>#><03>%<25><05>*M<03>-<2D><02>05<04>3<EFBFBD><02>5<EFBFBD> <09>=~<7E>=~<7E>dt<64>d<03>@<40><>dr<64>d<>Aw<07>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>d<>/<2F><13><05>p<01><1C><03><1F><02>"<05>&@<06>*u<>*<2A><08>0<EFBFBD><06>5<EFBFBD><01>7M<02>9~<03><_<04>@<08>E<0F><13><> <09><> t <0B><08> r<> <20>/<06><1B><03><1E><01> F<> F<> t<> <09>(<28><> r<> <00>)[<5B>)<29><08>/<2F><06>4<EFBFBD><01>63<02>8d<03>;E<04>><3E><08>C<EFBFBD><43> <20> <09><> <0C>t <09>Z<> <0C>r<EFBFBD> <0C><>/<00><18><06>N<01><1E><08>$k<0E>-m <0B>5-<2D>5<EFBFBD><02>8W<07>=<3D><02>@1<02>BU<03>D<EFBFBD><01>F.<01>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A> <0C><>/<2F>
<EFBFBD><04>c<04><1D><07>"\<01>#<23><02>&<26><01>(B<06>,<2C><06>15<06>5<EFBFBD><03>8<EFBFBD><04><:<07>B<0F>B<EFBFBD><02>E!<07>J<EFBFBD><4A>J<EFBFBD><4A>
<EFBFBD><EFBFBD> 
<EFBFBD>q?<3F>`<60>3theDolphindiskprovidesaseparateFDEVforeachpartitionofthemachine;theDEVICEINFOfieldofeachhaspointerstothepartition'sdirectoryandotherinformationspecifictofilesonthatpartitiononly.Thefollowingfieldsareallpointerfields,andcontainfunctionsforimplementingvariousdeviceoperations.Notalldevicesneedhaveallfieldsfilledin;therequiredonesarelistedfirstandsoindicated.Some``required''fieldshavedefaultsspecifiedintheFDEV(orSTREAM)recorddeclaration,sotheimplementorneednotexplicitlyfillthosefieldsifthedefaultisreasonable.Eachfieldispresentedwithitsarguments,inthestyleofafunctiondefinition;ofcourse,itisthecontentsofthefield,notthefieldname,thatisthefunction.Usingobject-orientedterminology,theoccupantsofthesefieldsarereferredtoas``methods''.Forexample,``theBINmethod''means``thefunctionthatoccupiestheBINfield''.Oneoftheargumentstoeachmethodisusuallyeitherthedeviceitself,orastreamopenonthedevice,sothatthedevice(andhenceitsDEVICEINFO)isusuallyaccessibletoallthesefunctions.Argumentsthatarefilenamesorpatternsorpiecesoffilenamescanbeeitherlitatomsorstrings,andalreadyhavetheirhostand/ordirectorypartsappropriatelyfilledinfromtheconnecteddirectorydefaults.Thedevicemayassumethatthehostfieldofthefilenameisindeedanamethatthedevicehassaiditimplements(seeHOSTNAMEP).``Full''filenamesreturnedbythesefunctions(orstoredintheFULLFILENAMEfieldofastream)shouldbelitatoms,andatleastinthecurrentimplementationshouldbealluppercase.Fieldsrequiredofeverydevice:(HOSTNAMEPHOSTNAMEDEVICE)Calledbythegenericfilesystemcodewhenpresentedwithahostnameforwhichthereisasyetnodevicedefined.Thefunctionshouldreturnnon-NILifit``recognizes''HOSTNAME.Therearetwowaysinwhichthismethodisinvoked:(1)ToobtainadeviceforHOSTNAME,forexample,sothatafilecanbeopenedonit.Inthiscase,DEVICEisanalreadydefineddevice(theonewhoseHOSTNAMEPmethodisbeingcalled),andthefunctionshouldreturneitheranewdevice,orT,meaningitiswillingtotakeresponsibilityforthishostnameaswellasanypreviousnameunderwhichthedevicewasregistered.Ineithercase,thecallerwillinstallthereturneddevice,orDEVICEifvaluewasT,asthedevicetowhichHOSTNAMEmaps.(2)Asapurepredicate.Inthiscase,DEVICEisNIL,andthefunctionneedonlyreturnTorNIL,indicatingwhetheritbelievesthatHOSTNAMEisthenameofahost.Inpractice,theHOSTNAMEPmethodneedonlytakecareofthefirstcase,sincethatalsotakescareofthesecondcase.Thesecondcaseisprovidedsothatthedeviceneednotbecreateduntilthereisanactualuseforit,shouldthedevicewishtoavoidunnecessarywork.Inpracticeitisrarethatanyonetestsahostnamewithoutsubsequentlyneedingtohavethedevicecreatedinfull.TherearebasicallythreekindsofdevicesinthesystemasdistinguishedbytheirHOSTNAMEPmethods.(1)Predefineddeviceswithexactlyonename,orstrictlyinternaldeviceswithnonotionofname.Forexample,theCOREdevicealwaysexists,andhasexactlyonename;theSPPdevice(anetworkbytestream)hasnoname(itsupportsnofilesdirectly).SuchdeviceshaveaHOSTNAMEPmethodofNILLtheonlynametheyevergobyistheonetheygaveto\DEFINEDEVICE,ifany.Thisisthedefault.<00>J<EFBFBD><4A>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<EFBFBD><EFBFBD>hsp<00>Jj<4A>hs<68>/<2F>br<02><19><06>B<03>"N<07>'<27><00>)D<07>.<2E><>.<2E><>bt<>b<03>2<16>br<>b<01>2<EFBFBD><02>5<03>8i<08>><01>?<3F><02>Bv<07>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>b<01>/<2F>`.t <09><1F><>`.r<>`.<2E> <20><04>$<01>&3<03>)<29><02>,<2C><07>2S<01>4g<02>7,
<EFBFBD>><08>D6<02>GR<04>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E>/<2F>^[
<EFBFBD><1E><07>#<<01>$<24><04>'z<01>)R<03>+<2B><08>1X<04>4G<34>^[<5B> <09><>Z<EFBFBD><02> <0C><08><12><05>G<02><18><02>_<06><06>#<02>%<25><06>*i<08>0L<02>2s <0B>;<06>?<3F><05>C<EFBFBD>
<EFBFBD>J<EFBFBD><EFBFBD>K<19>K<19>Z<EFBFBD><5A> <09><>Y <02> <0C><02><0E><06><13><03>Z<03><1A><02><1C><05> <20><05>$U<02>&<26><02>)<07>.<2E><03>2<02>4<EFBFBD><05>8Y<04>;Q<02>>)<01>@ <09>Ft<46>G<03>J<EFBFBD><4A>J<EFBFBD><4A>Y <20> <09><>WV <0B><10><05><14><03><17><07><08>"<22><01>$m<02>&<26><>&<26><>WVt<56>WV<03>**<2A>WVr<56>WV<57>*<2A><02>,<2C><>,<2C><>WVt<56>WV<05>1<EFBFBD><31>WVr<56>WV<00>2<EFBFBD><05>7H <0B>><3E><01>@q<02>B<EFBFBD>
<EFBFBD>J<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>WV<EFBFBD> <09><>U<EFBFBD><03>
=<02><0F> <09>k<03>|<04><05><1E><01><1F><02>"=<06>&<26><01>('
<EFBFBD>/5<>/<2F><03>3<04>6<01>7x<08>=<3D><03>@<40><02>Bm <09>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>U<EFBFBD><55> <09><>S<EFBFBD><02> a<04><0F><01>d<00><12><07>
<EFBFBD><1E><01> <20><06>%d<01>&<26><01>(A<02>*<2A><07>0&<01>1<EFBFBD><02>4Z<05>7<EFBFBD><02>:o<02><<3C><04>@<04>D<<03>G<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>S<EFBFBD><53> <09><>Q<EFBFBD><08><0F><> <04><13><0E>C <0B>%!<02>'c<08>-<2D><01>/><04>2<EFBFBD><05>6=<02>8t<07>=<3D><01>?'<01>@<40> <0B>G<EFBFBD><47>HF<02>J<EFBFBD><4A>J<EFBFBD><4A>Q<EFBFBD><51> <09><>P%<07><0F><04>u<>u<>P%t<>P%<02><14><>P%r<>P%<25>R<07><1A><04><1E><04>!<21><07>'<03>)<29><07>/<02>1F<31>1F<31>P%t<>P%<02>3<EFBFBD><33>P%r<>P%<25>4#<07>7<EFBFBD><37>P%<25> <09><>L<EFBFBD><02> <0C><01>]<02><10><08><01><18><03><1B><05> }<01>!<21><06>&E<05>*<02>,;<05>0T<06>3<EFBFBD><01>5w<00>6x<05>:<3A><03>><01>?<3F><02>B<06>F<EFBFBD><01>H"<03>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C> <09><>J<EFBFBD><02> D<05>x<03><13><04><17><02>N<>N<>J<EFBFBD>t<EFBFBD>J<EFBFBD> <09>!<21><>J<EFBFBD>r<EFBFBD>J<EFBFBD><00>"<22><01>$<06>(<28> <09>.<2E><01>0p<02>2Q<04>5<EFBFBD> <09>< <0C><<3C><08>C<EFBFBD><03>FB<02>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>J<EFBFBD><4A> <09><>I<04><01><0F><07><14><01><16><05>|<01><03>`<04>"<22><02>$<24><01>&<26><05>*<2A><07>/<2F><01>1G<07>5<EFBFBD><02>8q<06>=#<03>@K<04>Cq<03>FJ<05>J<EFBFBD><4A>J<EFBFBD><4A>I<0E> <09><>GD<08><0F><04><12> <0C>2<05><1E><01> /<03>#u<02>%<25><08>,<08>1<EFBFBD><08>7<1D>7<EFBFBD><02>:9<05>>[<02>A><05>E<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>GD<47> <09><>Ez<03> <0C><04><0F><01>|<02><13><03><03><19><01><1A><05>`<00> n<03>$<03>&<26><02>)<05>-'<02>/<03>29<01>3r <09>:<3A><03>=i<>=i<>Ezt<7A>Ez<08>D<EFBFBD><44>Ezr<7A>Ez<01>F1<46>F<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>Ez<45> <09><>C<EFBFBD><03> 3<04>M<07><15><01><17><04><1A><08> <20><02>"<22><05>&<26><01>(P<02>*<2A><>*<2A><>C<EFBFBD>t<EFBFBD>C<EFBFBD> <0B>4<EFBFBD><34>C<EFBFBD>r<EFBFBD>C<EFBFBD><43>4<EFBFBD><04>7<EFBFBD><01>9<EFBFBD><00>:<3A><06>?N<05>C<EFBFBD><01>Ee<08>J<EFBFBD><4A>J<EFBFBD><4A>C<EFBFBD><43> <09><>A<EFBFBD><02> }<01>
<EFBFBD><04><10><01>^<02><14><06>(
<EFBFBD>"<22><05>'<01>(<28><02>*<2A> <09>0<EFBFBD><30>A<EFBFBD><41> <09><>>c<05>
<EFBFBD><07>C<01><14><04>T<06><1C><>>c<> <09><>;&t <09>1<>1<>;&x<>;&<07><19><>;&t<>;&<26><1A><><1A><>;&x<>;&<05>!<21>;&t<>;&<00><1F><>;&y<>;&<26><1F><>;&<26><10><>89r<05><14><01><16><02><18><06>Q<03><1F><05>#<23><03>&<26><03>*u<08>0<EFBFBD><03>3p<00>4m<03>77<03>:<3A><02><<3C><04>@<40><04>D<01>EM<01>F<EFBFBD><02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>89<38><10><>6o<05><14><07><19><>;<02><1C><07>";<05>&<26><05>*<2A><03>-S<>6ot<6F>6o<02>/<2F><>6or<6F>6o<36>09<01>1t<01>2<EFBFBD>
<EFBFBD>:{<7B>:{<7B>6ox<6F>6o<07>A%<25>6or<6F>6o<00>A<EFBFBD><41>B<<04>F<02>HD<02>J<EFBFBD><4A>J<EFBFBD><4A>6o<36><10><>4<EFBFBD><03><13><01>?<04><03><1B><05> h<01>!<21><07>&<26><>4<EFBFBD><34><13><>1<EFBFBD><02><15><01><17><05><00><05>!$<02>#<<3C>#<<3C>1<EFBFBD>x<EFBFBD>1<EFBFBD><07>)<29><>1<EFBFBD>r<EFBFBD>1<EFBFBD><00>*<2A><02>,<2C><07>2`<01>3<EFBFBD><03>6<EFBFBD><00>7<EFBFBD><03>9<EFBFBD><02><W<01>>#<05>B<EFBFBD><01>D<EFBFBD><02>FC<46>F<EFBFBD><01>HO<03>J<EFBFBD><4A>J<EFBFBD><4A>1<EFBFBD><31><13><>/<2F><04>A<>A<>/<2F>x<EFBFBD>/<2F><05><1B><>/<2F>r<EFBFBD>/<2F><>R<01><1D><01><1F><06>$<24><06>)<29><05>.I<03>1=<02>4<04>8K<38>8K<38>/<2F>t<EFBFBD>/<2F><08>?<3F><>/<2F>r<EFBFBD>/<2F><>@{<05>E<EFBFBD><01>G&<04>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><><13><>.<07><02><02>K<07>"<22><05>&<26><05>*<2A><05>.<2E><00>/<2F><02>2<EFBFBD><06>6<EFBFBD><01>8<EFBFBD><38>8<EFBFBD><38>.t<>.<00>9r<39>.r<>.<00>:*<06>?<3F><01>@<40><01>B<06>Fo<01>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>.<1B><13><>,H
<EFBFBD>A<02>u<03>!
<03>#<23><03>'<27><01>)Z<03>,><01>-<2D><02>0~<07>6<03>9<EFBFBD><04>=<3D><04>A<EFBFBD><02>D
<05>HC<02>J<EFBFBD><4A>J<EFBFBD><4A>,H<><13><>*~
<EFBFBD>W<><1A><01>a<05> %<04>#D<02>%}<05>) <03>+<2B><06>/n<02>1<EFBFBD><07>7<06>;<3B><01>=*<2A>=*<2A>*~x<>*~<05>A<EFBFBD><41>*~r<>*~<7E>A<EFBFBD><01>C3<04>F<EFBFBD><02>I:<3A>I:<3A>*~t<>*~<00>J<11>*~r<>*~<00>J<EFBFBD><4A>J<EFBFBD><4A>*~<7E><13><>(<28><01>a<02><17><05><1B><01>&<04>!<03>!<03>(<28>x<EFBFBD>(<28><07>'<27><>(<28>r<EFBFBD>(<28><>(<04>+z<>(<28><><13><>%<25><02><15><01><17><00><18><03> <09>":<3A>"<22><01>$X<03>&<26><04>*<07>*<07>%<25>x<EFBFBD>%<25><05>.v<>%<25>r<EFBFBD>%<25><>.<2E><01>00<30>00<30>%<25>t<EFBFBD>%<25><02>2<EFBFBD><32>%<25>r<EFBFBD>%<25><00>3w<02>6<02>8V<07>=<3D><03>@<40><03>C<EFBFBD><05>G<EFBFBD><47>G<EFBFBD><47>%<25>t<EFBFBD>%<25><00>H<EFBFBD><48>%<25>r<EFBFBD>%<25><>I+<01>J<EFBFBD><4A>J<EFBFBD><4A>%<25><><13><>#<23>t<02>e<>#<23>r<EFBFBD>#<23><00> <09>B<06>"_<01>#<23><07>(<28><03>++<2B>++<2B>#<23>x<EFBFBD>#<23><07>1<EFBFBD><31>#<23>r<EFBFBD>#<23><>2-<01>3k<02>5<EFBFBD><03>9-<01>:<3A><00>;<3B><04>><3E><>#<23><><10><>!<01><<08><17><02><19><><19><>!t<>!<08>!X<>!r<>!<07>!<21><05>&<26><03>)<29><03>,<2C><03>/<2F><03>2h<01>3<EFBFBD><02>68<04>8<EFBFBD><04><
<04>?Z<03>B<03>D<EFBFBD><04>H<03>J<EFBFBD><4A>J<EFBFBD><4A>!<07><10><>4<01><02>M<05><18><04><1B><><02><1E><05>#)<03>%<25><01>''<07>,<2C><01>.]<03>0<EFBFBD><02>3.<05>7B<03>:p<02><<3C><01>>z<06>C<04>F)<04>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>4<><10><>j<01>u<05>i<02><18><02><02><1C><05>!<02>#a<05>'<27><03>*<2A><01>,Z<04>0
<EFBFBD>7<EFBFBD><04>;`<60>;<3B><01>=<3D><07>B<EFBFBD><01>C<EFBFBD><01>EW<03>H"<03>J<EFBFBD><4A>J<EFBFBD><4A>j<><10><><1B><05>)<04>
<00><03><1B><03>b<06>$; <0B>,C<06>1I<01>2<EFBFBD><03>5<EFBFBD><02>8<05><&<06>@<40><01>B?<04>D<EFBFBD><44><1B><><10><><18><04><14><02><08><1C><04> 9<04>#<23><01>%<25><06>*<2A><01>,Z<02>.<2E><05>3T<01>5 <0C>=y<01>?<3F><04>B<EFBFBD><42>B<EFBFBD><42><18>t<EFBFBD><18><08>Jj<4A><18>r<EFBFBD><18><>J<EFBFBD><4A>J<EFBFBD><4A><18><><10><><16><07><15><><16><><13><><02> <09><1C><06>!<21><03>$<24><06>)S<02>+<2B><04>0<01>1<EFBFBD><07>64<07>;?<06>?<3F><03>C<01>E<05>I6<01>J<EFBFBD><4A>J<EFBFBD><4A><05><13><>;<04><06><18><02>W<07>!6<02>#<23><>#<23><>;t<>;<03>'<01>;r<>;<3B>'<27><05>+<2B><05>0^<06>4y<02>7A<02>9<EFBFBD><06>>q<02>A,<04>Eu<02>G<EFBFBD><47>G<EFBFBD><47>;t<>;<02>Ji<4A>;r<>;<3B>J<EFBFBD><4A>J<EFBFBD><4A>;<3B><13><>h<05><17><01>y<06><1E><03>!<21><06>&O<02>(<28><01>*}<03>.<02>/<2F><07>5"<01>7<04>9<EFBFBD> <09>?a<>?<3F><03>C <06>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>h<><13><><0E><00><1A><1A><0E>t<EFBFBD><0E><08><1C><><0E>r<EFBFBD><0E><>?<05>"V<01>$<1F>$<1F><0E>t<EFBFBD><0E><03>'{<7B><0E>r<EFBFBD><0E><03>+I<03>.q<03>2?<03>5^<03>8q<01>:q<01><|<01>=<3D><02>@f<02>C!<03>F?<03>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><0E><><13><> <0C>t <0C><1E><> <0C>r<EFBFBD> <0C><00>{<01> <20><03>#x<>#<23><03>&<26><01>'<27><02>*)<07>.<2E><> <0C><> s
<EFBFBD>q?<3F>`<60>4(2)Devicesthatdon'tknowaheadoftimewhattheirnamewillbe,butforwhichtheremightbemanyincarnations.Thisisthemodelforremotefileservers.ThestandardwayofhandlingthiscaseistodefineadummydevicethathasonlyaHOSTNAMEPmethod,andnoname.WhentheHOSTNAMEPmethodgetscalledwithanamethatthedeviceknowsitcanservice,itcreatesadevicebythatname.Ifgivenanamethatisasynonymofanothername,itmightjustreturntheexistingdeviceofthecanonicalname(using\GETDEVICEFROMNAMEtofindtherightdevice).Ineithercase,theHOSTNAMEPmethodofthenewdeviceisusuallyNILLtheoriginaldeviceistheonlyonethatworriesaboutcreatingnewinstancesofthisclassofdevice.(3)Like(2),butallthedifferentnamesarehandledbyasingledevice,whichtakescareinternallyofthemultiplexingamong,say,differentremotehosts.HOSTNAMEPreturnsTinthiscase.Thisisusuallyclumsierthan(3),sodiscouraged.(EVENTFNDEVICEEVENT)CalledaroundLispexits,toallowthedevicetodoanynecessarycleaningup,clearingofcaches,disconnectswithremotehosts,etc.EVENTisoneofthefollowinglitatoms:BEFORELOGOUT,BEFORESYSOUT,BEFOREMAKESYS,BEFORESAVEVM,AFTERLOGOUT,AFTERSYSOUT,AFTERMAKESYS,AFTERSAVEVM,AFTERDOSYSOUT,AFTERDOMAKESYS,AFTERDOSAVEVM.TheAFTERxxxeventsareallrunwhenLispisbootedfromamemoryimagethatresultedfromaLOGOUT,SYSOUT,etc.TheAFTERDOxxxeventsrunwhencontinuingLispinthesameincarnationfollowingtheSYSOUT,etc.(thereisnosucheventforLOGOUT,ofcourse).The``after''eventsarecalledinthesameorderinwhichthedevicesweredefined;the``before''eventsinthereverseorder.Forexample,theBEFORELOGOUTeventfortheLeafremotefileserverdevicesperformsaFORCEOUTPUTonallitsopenfilesandthenbreakstheconnectionwiththefileserver.TheAFTERxxxeventsfortheLeafdevicescalls\REMOVEDEVICEonitselftoflushanyconnectionbetweenthenameandtheserver(sincenamesandaddressescanchangeoverexit).TheAFTERxxxeventsfortheDoradodiskdevicerebuildsitscacheofthedisk'sdirectory.ThereareafewdevicesinthesystemthatexistonlyfortheirEVENTFN.Inmostcases,asimplerwaytotellthesystemyouwantsomethingperformedaroundexitistoaddyoureventfunctiontothelistAROUNDEXITFNSinsteadofgoingtotheexpenseofdefiningadeviceforit.Thereisyetanotherlist,\SYSTEMCACHEVARS,forhandlingamorespecialized``aroundexit''operation:everytimeLispisbooted,eachofthevariablesinthelist\SYSTEMCACHEVARSissettoNIL.Thefollowingarerequiredofallnameddevices,thatis,devicesthatmapfromsomehostnametothedevice,uponwhichfilesmightbeopenedorotherwisemanipulated:(DIRECTORYNAMEPHOST/DIRDEVICE)TrueifHOST/DIRisavaliddirectorynameonDEVICE.Functionshouldideallyperformrecognitionaswell,andreturnthe``true''name.Forexample,given``{PHYLEX:}<LISP>''asargument,itmightreturn{Phylex:PARC:Xerox}<Lisp>.HOST/DIRmightincludeasubdirectoryname.Thedeviceshouldattempttotellthetruthaboutwhetherthesubdirectoryexistsornot,thoughthismaynotbepossiblefordeviceswithfakesubdirectories.DefaultstoNILL,i.e.,devicesupportsnodirectories.UsedbythecommandCONNandthefunctionDIRECTORYNAMEP.(OPENFILENAMEACCESSRECOGPARAMETERSDEVICE)<00>.<2E><> <0C><>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<00>
<EFBFBD><EFBFBD>hs<EFBFBD><13><>br<02><15><06><1A><03>u<04> <20><03>$q<04>(H<01>)<29><03>,<2C><03>0<04>3<03>6<EFBFBD><03>93<02>;R<02>=<3D><02>?<3F><04>C<EFBFBD><04>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>b<01><13><>`7<01><15><03><19> <0C>"<10>"<22><03>%<25><01>'<27><02>* <04>.f<02>0<EFBFBD><05>5<EFBFBD><03>8<07>=*<2A>=<3D><02>@<40><07>F<EFBFBD><02>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>`7<><13><>^m<07>|<03><03><1E><01> &<01>!<21><05>%<25><00>&<26><04>+<2B><05>0<03>2<EFBFBD><02>5<03>8<00>9!<21>9!<21>^mt<6D>^m<08>@<40><>^mr<6D>^m<>A<06>F`<02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>^m<><13><>\<5C><04><17><>N<03>N<02><1E><><1E><>\<5C>t<EFBFBD>\<5C><08>&%<25>\<5C>r<EFBFBD>\<5C><>&<26><05>+<2B><03>.:<05>2<03>5<00>6-<03>9<EFBFBD><03><<3C><02>><3E><05>B<EFBFBD><04>G'<01>He<02>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><><13><>Z<EFBFBD><07><18><01><19><06>*<00>1<05>#O<01>%'<03>'<27><04>+<2B><>,$<01>-<2D><04>1<00>2<03>5<EFBFBD><03>8\<01>9<EFBFBD><00>:<3A><06>@`<01>A<EFBFBD><06>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>Z<EFBFBD><5A><13><>X<EFBFBD><01>k<04><1B><03>j<05>$<24><02>(a<07>.<2E><05>4<01>7<02>:<3A><08>A<EFBFBD><03>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>X<EFBFBD><58><13><>W3t<11>"<22><>W3r<33>W3<57>#p<01>% <03>'<27><02>*-<04>-i<07>2g<32>2<EFBFBD><01>4<EFBFBD><05>8j<04>;<3B><02>=<3D><>=<3D><>W3t<33>W3<08>Ev<45>W3r<33>W3<57>E<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>W3<57><13><>U`<01><15><02><02><1A><05>9<01> <20><06>%]<5D>%]<5D>U`t<>U`<03>(<28><>U`r<>U`<03>,|<07>1<EFBFBD><05>5<EFBFBD><01>7<<02>9<EFBFBD><03><<3C><02>?k<03>B<<06>G<04>J<EFBFBD><4A>J<EFBFBD><4A>U`<60><13><>S<EFBFBD><07><18><02><1B><08>!F<01>"<22><03>%C<04>(D<01>)<29><06>-<2D><>S<EFBFBD><53><13><>P<EFBFBD><02><03>O<03><1B><02>h<02> d<02>"<22><08>(~<04>,<2C><02>//<06>4<EFBFBD><01>6<EFBFBD><00>7<EFBFBD><05>;<3B><06>@b<04>Dz<04>H<03>J<EFBFBD><4A>J<EFBFBD><4A>P<EFBFBD><50><13><>N<EFBFBD> <09><19><01><1B><02><1D> <0B>%<25><05>*<2A><03>-,<08>2<EFBFBD><05>7H<05>;<06>;w<>;w<>N<EFBFBD>t<EFBFBD>N<EFBFBD><08>C<06>N<EFBFBD>r<EFBFBD>N<EFBFBD><4E>Cw<06>H<12>H<12>N<EFBFBD>t<EFBFBD>N<EFBFBD><00>H<EFBFBD><48>N<EFBFBD>r<EFBFBD>N<EFBFBD><4E>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>N<EFBFBD><4E><13><>M <03>R<04>i<><19><03><1C><01><1D><06>"j<07>'<27><03>*<2A><03>-<01>.<2E> <0B>6<02>M <0C> <09><>I<EFBFBD>t<07><11><><11><>I<EFBFBD>x<EFBFBD>I<EFBFBD><05><15><>I<EFBFBD>t<EFBFBD>I<EFBFBD><49><16><><16><>I<EFBFBD>x<EFBFBD>I<EFBFBD><04><1A><>I<EFBFBD>t<EFBFBD>I<EFBFBD><00><1B><>I<EFBFBD><49><10><>F<EFBFBD>r<05><14><05><19><03><1C><05> <01>!<21><04>%3<02>'<27><05>+<2B><01>-Q<01>/F<02>1<EFBFBD><08>7<EFBFBD><07>=1<02>?<3F><07>D<EFBFBD><01>FJ<06>J<EFBFBD><4A>J<EFBFBD><4A>F<EFBFBD><46><10><>E
<EFBFBD><17><03><05><1F><05>#<23><03>&h<>'<07>'<07>Ex<>E<04>*<2A><>Er<>E<18>+<2B><01>- <02>/<2F><01>1<EFBFBD><02>4<08>::<08>?<3F><>?<3F><>Et<>E <0B>J<11>Er<>E<00>J<EFBFBD><4A>J<EFBFBD><4A>E<18><10><>CEt <0B><1A><>CEr<45>CE<00><1C><><1C><>CEt<45>CE <0C>'<27><>CEr<45>CE<00>)<29><>)<29><>CEt<45>CE <0B>3<EFBFBD><33>CEr<45>CE<00>5<EFBFBD><35>5<EFBFBD><35>CEt<45>CE
<EFBFBD>><3E><>CEr<45>CE<00>@<40><>@<40><>CEt<45>CE
<EFBFBD>J<12>CEr<45>CE<00>J<EFBFBD><4A>J<EFBFBD><4A>CE<43><10><>Art <0B><1A><>Arr<72>Ar<00><1B><><1B><>Art<72>Ar
<EFBFBD>% <09>Arr<72>Ar<00>&/<2F>&/<2F>Art<72>Ar <0C>1<1A>Arr<72>Ar<00>2@<40>2@<40>Art<72>Ar
<EFBFBD>><02>Arr<72>Ar<00>?(<28>?(<28>Art<72>Ar <0C>J<13>Arr<72>Ar<00>J<EFBFBD><4A>K<1A>K<1A>Ar<41><10><>?<3F><02>P<>P<>?<3F>t<EFBFBD>?<3F><04><17><>?<3F>r<EFBFBD>?<3F><02><05><02> Z<02>"0<02>$<24><03>(H<03>+G<01>,<2C><05>1<03>4h<00>5z<05>:<3A><04>><3E><03>Ar<07>F<EFBFBD><03>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>?<3F><><10><>=<3D>t<05><15><>=<3D>r<EFBFBD>=<3D><00><16><><16><>=<3D>t<EFBFBD>=<3D><05><1B><>=<3D>r<EFBFBD>=<3D><00><03><1F><> <20><02>#<23><>#<23><>=<3D>t<EFBFBD>=<3D><06>)<29><>=<3D>r<EFBFBD>=<3D><02>,<2C><05>1=<02>4&<03>8- <09>?T<03>B<EFBFBD><01>D<EFBFBD><02>Gr<03>J<EFBFBD><4A>J<EFBFBD><4A>=<3D><><10><>;<3B>
<EFBFBD><17><08><02> |<7C> |<7C>;<3B>t<EFBFBD>;<3B><05>%<25><>;<3B>r<EFBFBD>;<3B><00>&<26><03>)'<05>-D<01>.<2E><01>0<EFBFBD><03>4:<04>8 <02>:d<>:d<>;<3B>t<EFBFBD>;<3B><05>?n<>;<3B>r<EFBFBD>;<3B><00>@h<01>B=<07>Gv<47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>;<3B><><10><>:&<08><05>(<02>^<05>4<01> <20><02>#<03>&d<04>)<29><01>+<2B><04>/u<02>1<EFBFBD><06>6^<03>9<EFBFBD><07>><3E><02>A* <09>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>:&<26><10><>8\<01><02>B<06><18><05>O<>8\<5C><10><>5x<02>u<07>}<02><16><16>5xt<78>5x <0B>&*<2A>5xr<78>5x<35>&<26><04>*<2A><02>-P<02>/<2F><03>3R<05>81<03>:<3A><05>?<06>D<07>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>5x<35><10><>3<EFBFBD>t
<EFBFBD><19><>3<EFBFBD>r<EFBFBD>3<EFBFBD><33>i<01><1C><02><1E><02> u<03>#<23><04>&<26><02>)<29><03>-<05>1m<02>3<EFBFBD> <09>:<3A><03>><02>@<40><03>C<06>G<47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>3<EFBFBD><33><10><>1<EFBFBD>t<04><14><>1<EFBFBD>r<EFBFBD>1<EFBFBD><02>^<05><1B><02><1D><02> @<03>#s<06>(=<04>+O<>+O<>1<EFBFBD>t<EFBFBD>1<EFBFBD> <0C>6:<3A>1<EFBFBD>r<EFBFBD>1<EFBFBD><31>6<EFBFBD><01>8<EFBFBD><05><-<01>=<3D><04>AU<02>C<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>1<EFBFBD><31><10><>/<2F><06>:<02><18><03><1C><02><1F><02>"e<05>&<26><05>*<2A><04>/V<02>2K<08>8<EFBFBD><02>;b<05>@F<03>C<EFBFBD><05>GU<47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><><10><>.5t<04><14><>.5r<EFBFBD>.5<02>,<05>6<02>E<02>v<05>$O<03>'
<05>+!<07>0<<02>1<EFBFBD><04>5<EFBFBD><01>7<02>9@<05><<3C> <09>B~<7E>.5<EFBFBD><10><>+H<04>w<02><16><00><17><02>I<06><1E><01> <20><02>"<22><05>'.<03>)<29><04>,<2C><03>/<2F><02>2<04>5B<35>5B<35>+Ht<48>+H<06>;#<23>+Hr<48>+H<00>;<3B><><R<01>><03>AI<05>D<EFBFBD><00>F
<06>J<EFBFBD><4A>J<EFBFBD><4A>+H<><10><>)u<02>K<01><14><03><02>Z<05><1D><02> M<03>#<23><08>*
<08>0<EFBFBD><05>5H<03>7<EFBFBD><01>9"<01>:<3A><02>=J<03>@f<04>C<EFBFBD><07>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>)u<><10><>'<27><02><12><03><14><><14><>'<27>t<EFBFBD>'<27> <0C><1F><>'<27>r<EFBFBD>'<27><> N<06>$<24><01>&<26><04>*1<01>+<2B><02>.
<06>3%<01>4<EFBFBD><07>:<00>;%<05>?M<02>Ap<02>C<03>Co<04>GU<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>'<27><><10><>%<25><06><15><04>z<>z<>%<25>t<EFBFBD>%<25><0F>%<25><>%<25>r<EFBFBD>%<25><00>&<26><02>)R<07>/0<00>0<EFBFBD><03>4:
<EFBFBD>;?<07>@<40><05>DR <09>J<EFBFBD><4A>J<EFBFBD><4A>%<25><><10><>$<04><03>
<03><19><01>5<06><1F><03>"<22><01>$<24><02>&<26><08>,?<01>-<2D><02>/<2F><03>1<EFBFBD><31>1<EFBFBD><31>$t<>$<0F>?n<>$r<>$<05>?<3F><01>A<02>B<EFBFBD><01>Ds<44>Ds<44>$t<>$<02>F<EFBFBD><46>$r<>$<00>GU<47>$<05> <09><> <20><02> <0C><08><12><02><14><07>><01><1B><02><1D><04>"<07>'<03>)<29><02>+d<06>0 <03>2<EFBFBD><02>5<EFBFBD><03>8<EFBFBD><03><r<07>B<EFBFBD><01>D<02>FU<06>J<EFBFBD><4A>J<EFBFBD><4A> <20><> <09><><1E><03>
X<04>5<04><13><04><17><01>}<05>+<01><1F><08>%<25> <0B>-<2D><><1E><> <09><><1B>t<0E>d<>d<><1B>x<EFBFBD><1B><07>D<><1B>t<EFBFBD><1B><><1B><1B><1B>x<EFBFBD><1B><05>"<22><><1B>t<EFBFBD><1B><00>#g<><1B><><10><><18>r<03>1<01><15><><15><><18>x<EFBFBD><18><07><1B><><18>r<EFBFBD><18><><1C><01>2<00><1F><04>#K<08>)]<03>-`<01>/<2F><>/<2F><><18>x<EFBFBD><18><05>4<1A><18>r<EFBFBD><18><00>5<<3C>6<07><-<05>@<40><06>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A><18><><10><><16>
<EFBFBD><17><01>i<04><1C><02>b<05>#<23><02>%<25><07>*.<04>.C<>.<2E><02>1q<07>7><04>:<3A><01>;<3B><><16>t<EFBFBD><16><0E>H9<48><16>r<EFBFBD><16><01>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><16><><10><><14><08><17><01>[<04><1D><05>"r<>"r<><14>t<EFBFBD><14><18>7q<37><14>r<EFBFBD><14><00>8<EFBFBD><38>9<EFBFBD><39>9<EFBFBD><39><14>x<EFBFBD><14><07>?<3F><><14>r<EFBFBD><14><>@<40><04>E<06>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A><14><><10><>' <0B>o<04><1C><> <02><1F><05>$&<05>(<28><06>-<2D><01>/W<03>1<EFBFBD><02>4<04>7<EFBFBD><04>;g<06>@<40><02>C <0B>J<EFBFBD><4A>J<EFBFBD><4A>'<27><10><>]<05>K<01><03><18><05><1D><03> I<02>#U<02>%<25><01>'<27><07>-
<02>/R<06>4<03>7@<03>:J<0E>Ca<43>C<EFBFBD><07>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>]<5D><10><><0F>t<03><13><><0F>r<EFBFBD><0F><00> <04><17><05>`<07>",<01>$r <0B>+<2B><>,w<03>0J<01>2<EFBFBD><02>5%<06>;<3B><>;<3B><><0F>t<EFBFBD><0F><03>?<1E><0F>r<EFBFBD><0F><>?<3F><02>B<EFBFBD><02>Ez<07>J<EFBFBD><4A>J<EFBFBD><4A><0F><><10><>
<EFBFBD>t
<EFBFBD>S<>
<EFBFBD>r<EFBFBD>
<EFBFBD><00><1C><>
<EFBFBD><EFBFBD> <09><>
zt<08>Z<>Z<>
zx<EFBFBD>
z<03><15><>
zt<EFBFBD>
z<EFBFBD><16><><16><>
zx<EFBFBD>
z<05>)<29>
zt<EFBFBD>
z<EFBFBD><00><00>
zx<EFBFBD>
z<04><1F><>
zt<EFBFBD>
z<EFBFBD> <20><> <20><>
zx<EFBFBD>
z <09>(<28><>
zt<EFBFBD>
z<EFBFBD>)<29><>)<29><>
zx<EFBFBD>
z<05>-<2D><>
zt<EFBFBD>
z<00>.<2E><>
z<EFBFBD> A
<EFBFBD>q?<3F>`<60>y5UsedtoimplementtheOPENFILEandOPENSTREAMfunctions.OpensthefilenamedNAMEonthisdeviceforaccessACCESS,returningaSTREAM.ThestreamisusuallyonDEVICE(itsDEVICEfieldisDEVICE),butisnotrequiredtobe.TheargumentsACCESS,RECOG,PARAMETERSareaswiththeOPENFILEfunctioninthemanual.Thus,ifNAMEdoesnotincludeaversionnumber,recognitionisaccordingtoRECOG,whichshouldbeappropriatelydefaultedperACCESS(INPUTimpliesOLD,OUTPUTimpliesNEW,BOTHimpliesOLD/NEW).TheargumentNAMEcanalsobeaSTREAM,whichmustbeaclosedstream.OPENFILEshould``reopen''thestream.Thevaluereturnedinthiscasemaybeanewstream(withthesamenameastheold),ortheoldstream(NAME)itself.Itislikelythatthespecificationwillbechangedatsomepointtorequirethattheoldstreamitselfbereturned,suitablyreopened.TheargumentPARAMETERSisalistofpairs(OPTIONVALUE).ThemostinterestingOPTIONsareasfollows:TYPEFornewfiles,thetypeofthefile(TEXTorBINARY).Ifthisparameterisnotspecified,thevalueoftheglobalvariableDEFAULTFILETYPE(initiallyTEXT)shouldbeused.CREATIONDATEFornewfiles,thedateofitscreation.Thedeviceshouldusethisifatallpossibleinsteadoflettingthecreationdatedefaulttothecurrentdateandtime.LENGTHTheintendedlengthofthefile,inbytes.Thisneednotbeaccurateitisonlyahintthatmayallowsmarterallocation.Forexample,ifthedeviceknowsthatitdoesnothaveroomforafileofthespecifiedlength,itshouldimmediatelycauseaFILESYSTEMRESOURCESEXCEEDEDerrorfortheintendedfile.DON'T.CHANGE.DATEForoldfilesbeingopenedforaccessBOTH,don'tchangethecreationdateofthefile.ACCESS=BOTHwouldnormallyimplythatthecontentofthefileistochange,andthusitscreationdateshouldbeupdated.Useofthisparameterisaformof``cheating''tomakeitlookasthoughthefilehadnotchanged.Forexample,thecodethatrewritesfilemapsusesthisparameter,sincerewritingthefilemapdoesnotlogicallychangethefile'scontent.SEQUENTIALIfT,isahintthatthefilewill,orneed,onlybeaccessedsequentially,whichmayallowthedevicetoopenthefileinamoreefficientmode.Anyparametersthatthedevicedoesnotunderstandshouldbeignored,ratherthanbecauseforanerror.AlldevicesareencouragedtosupportatleastTYPEandCREATIONDATE.TheadditionaloptionsENDOSTREAMOPandBUFFERSarehandledbythegenericfilesystemcode;specifyingthemisequivalenttocallingSETFILEINFO(q.v.)immediatelyaftertheopen.FinepointaboutACCESS=OUTPUT:thisoperationalwaysproducesanew,emptyfile,independentofwhetheritsnameisexactlythenameofanexistingfile.Thatis,itreplacesanyoldfilebythesamename.Onopening,suchafilehasanendoffileofzero.Ofcourse,sinceRECOGdefaultstoNEWinthiscase,thenamecanonlyclashwithanoldfilenameifaversionwasexplicitlyspecified,orRECOGisOLDorOLD/NEW.Toopenanoldfileforoutputbutpreserveitscontents,i.e.,onlywriteoverpartofthefile,oneshouldopenforACCESS=BOTH(sincetopreservetheoldcontentsoneimplicitlyreadsthem).<00>.<2E><>
z<EFBFBD>
<EFBFBD><EFBFBD>g,t<>I<EFBFBD><49>hsp<00>Jj<4A>hs<68><10><>br<03>
<01><15><08>f<02><1E><><1E><>bt<>b<07>%d<>br<>b<01>%<25><02>(o<>(o<>bt<>b <09>0<EFBFBD><30>br<>b<01>1A <09>7x<37>7<EFBFBD><04><<02>>_<03>@<40><04>E<19>E<19>bx<>b<03>H<EFBFBD><48>br<>b<01>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`.<03><05>3<02>O<05>;<3B>;<3B>`.x<>`.<05>!<21><>`.r<>`.<00>"y<08>(]<00>)h<>)h<>`.t<>`.<05>.r<>`.r<>`.<00>/.<2E>/<2F><02>2K<05>6<EFBFBD><01>7<EFBFBD><06><t<01>>Y<>>Y<>`.x<>`.<05>B<EFBFBD><42>`.r<>`.<2E>C.<03>E`<60>E`<60>`.t<>`.<05>Jj<4A>`.r<>`.<2E>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E><10><>^[<04><13><01><02><02>^[x<>^[<05>q<>^[r<>^[<01><1A><02><01>v<02> <20><07>&M<01>'<27><02>*<1A>*<2A><02>-N<08>3<EFBFBD><33>3<EFBFBD><33>^[x<>^[<06>8<EFBFBD><38>^[t<>^[<5B>9<EFBFBD><39>9<EFBFBD><39>^[x<>^[<05>=<3D><>^[t<>^[<5B>><3E><>><3E><>^[x<>^[ <09>F<EFBFBD><46>^[r<>^[<5B>G<02>I@<01>J<EFBFBD><4A>J<EFBFBD><4A>^[<5B><10><>\<5C><03><13><02><15><><15><>\<5C>t<EFBFBD>\<5C><07><1C><>\<5C>r<EFBFBD>\<5C><>#<07>"<22><01>$.<02>&<26><06>+<2B><>,-<04>/<2F><01>1J<31>1J<31>\<5C>x<EFBFBD>\<5C><03>4<EFBFBD><34>\<5C>r<EFBFBD>\<5C><>5<<03>8_<02>:<3A><06>?<3F><00>@<40><06>En<06>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><><10><>Z<EFBFBD>
<EFBFBD><17><01><08>=<01> <20><> <20><>Z<EFBFBD>x<EFBFBD>Z<EFBFBD><04>$<24><>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><00>%<25><04>)<29><05>.<01>/<2F> <0C>8X<08>>\<02>@<40><>@<40><>Z<EFBFBD>x<EFBFBD>Z<EFBFBD><05>ED<45>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>E<EFBFBD><00>F6<46>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><04>Ji<4A>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>J<EFBFBD><4A>J<EFBFBD><4A>Z<EFBFBD><5A><10><>X<EFBFBD><06>'<27>'<27>X<EFBFBD>t<EFBFBD>X<EFBFBD><02><17><>X<EFBFBD>r<EFBFBD>X<EFBFBD><00>\<5C>\<5C>X<EFBFBD>t<EFBFBD>X<EFBFBD><05>f<>X<EFBFBD>r<EFBFBD>X<EFBFBD><58><1D><06>"T<>"T<>X<EFBFBD>t<EFBFBD>X<EFBFBD><02>$<24><>X<EFBFBD>r<EFBFBD>X<EFBFBD><00>%<25><>%<25><>X<EFBFBD>t<EFBFBD>X<EFBFBD><03>(<28><>X<EFBFBD>r<EFBFBD>X<EFBFBD><58>)=<06>-<2D><>-<2D><>X<EFBFBD>t<EFBFBD>X<EFBFBD><06>3<EFBFBD><33>X<EFBFBD>r<EFBFBD>X<EFBFBD><01>4<EFBFBD><34>X<EFBFBD><58><10><>U<EFBFBD><02>]<07>y<>y<>U<EFBFBD>x<EFBFBD>U<EFBFBD><03><1C><>U<EFBFBD>r<EFBFBD>U<EFBFBD><55>l<02><1F><03>"<22><01>$<24><00>%<25><>%<25><>U<EFBFBD>t<EFBFBD>U<EFBFBD><05>*<2A><>U<EFBFBD>r<EFBFBD>U<EFBFBD><00>+<2B><04>/<2F><03>2<EFBFBD><01>4<EFBFBD><00>5<EFBFBD><05>:<06>><3E><>?F<>?F<>U<EFBFBD>t<EFBFBD>U<EFBFBD><07>E<EFBFBD><45>U<EFBFBD>r<EFBFBD>U<EFBFBD><55>Fx<05>J<EFBFBD><4A>J<EFBFBD><4A>U<EFBFBD><55><10><>T" <09>c<02><18><06>:<3A><1D><02> H<04>#<23><07>)9<01>*<2A><03>-9<03>/<2F><02>2<EFBFBD><01>4<EFBFBD><00>5<EFBFBD><02>8p<05><<3C><04>@"<02>BZ<03>E<EFBFBD><03>I@<01>J<EFBFBD><4A>J<EFBFBD><4A>T"<22><10><>RX<02><12><04><15><01>f<02><19><02><1B><05> <00> <20><>RXx<58>RX<03>$<06>RXr<58>RX<00>$<24><06>(]<5D>(<28><>(<28><>RXs<58>RX<01>)<29><01>*<2A><05>-<2D><03>/<2F><02>1s <0C>7<EFBFBD><03>9<EFBFBD><01>;<06>?4<01>@W<03>C<04>E<EFBFBD><01>G<06>J<EFBFBD><4A>J<EFBFBD><4A>RX<52><10><>P<EFBFBD><03><12><02>k<02>4<05><19><05>$<01><1D><08>"'<07>&<08>*<2A><>P<EFBFBD>r<EFBFBD>P<EFBFBD><50>*<2A><>P<EFBFBD><50><10><>M<EFBFBD><02>=<07>:<3A>:<3A>M<EFBFBD>x<EFBFBD>M<EFBFBD> <09>!<16>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D>!r<01>"<22><00>#<23><03>%<25><01>'U<04>*<2A><00>*<2A><>M<EFBFBD>x<EFBFBD>M<EFBFBD><05>/}<7D>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D>/<2F><>/<2F><>M<EFBFBD>x<EFBFBD>M<EFBFBD><04>3<EFBFBD><33>M<EFBFBD>r<EFBFBD>M<EFBFBD><01>4<EFBFBD><34>5U<02>8<03>;2
<EFBFBD>A<EFBFBD><EFBFBD>A<EFBFBD><EFBFBD>M<EFBFBD>x<EFBFBD>M<EFBFBD><05>F;<3B>M<EFBFBD>r<EFBFBD>M<EFBFBD><00>G<02>I@<01>J<EFBFBD><4A>J<EFBFBD><4A>M<EFBFBD><4D><10><>K<EFBFBD><07>B<>K<EFBFBD><4B><13><>H<EFBFBD>t<03><<3C>H<EFBFBD>r<EFBFBD>H<EFBFBD><48><1D><02> l<02>#P<05>&<26><02>(<28><03>+<2B><01>-<2D><02>/<2F><03>2F<00>2<EFBFBD><32>H<EFBFBD>t<EFBFBD>H<EFBFBD><03>6<1B>H<EFBFBD>r<EFBFBD>H<EFBFBD><48>6<EFBFBD><01>8Q<38>8Q<38>H<EFBFBD>t<EFBFBD>H<EFBFBD><05>=[<5B>H<EFBFBD>r<EFBFBD>H<EFBFBD><01>><3E><>?#<01>@<40><03>C2<08>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>H<EFBFBD><48><1D><>G)<02>  <09>&<02>(8<04>+<2B><01>-J<02>/<2F><05>3z<07>8<EFBFBD><38>8<EFBFBD><38>G)t<>G)<0E>E<1F>G)r<>G)<29>E} <09>J<EFBFBD><4A>J<EFBFBD><4A>G)<29><1D><>EVt<03>!(<28>EVr<56>EV<00>!<21><05>&C<01>(<04>+<18>EV<45><13><>Bit <0B><1D><>Bir<69>Bi<42>"<22><02>%L<02>(<05>+@<02>-<03>0d<01>1<EFBFBD><02>3<EFBFBD><08>9.<2E>9<EFBFBD><02><L<05>@n<05>D<EFBFBD><02>G<03>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>Bi<42><1D><>@<40><01>I<02>!<07>&=<06>*<2A><01>,o<06>0<EFBFBD><02>2<EFBFBD><07>7<EFBFBD><03>:<3A><06>?k<01>@<40><02>C@<06>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>@<40><><1D><>><3E><02> U<04>#P<>><3E><><13><>;<3B>t<05><18><>;<3B>r<EFBFBD>;<3B><><1D><02> <20><07>&Q<05>*<2A><01>,7<02>.<2E><04>1L<01>2<EFBFBD><05>6<EFBFBD><36>7[<03>:n<03>=<3D><02>@4<01>B
<EFBFBD>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>;<3B><><1D><>:<03> <20><00>"<03>$<24><03>'<27><02>*<2A><04>.j<06>3^
<EFBFBD>9<EFBFBD><EFBFBD>:t<02>=<07>B<EFBFBD><01>DN<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>:<15><1D><>8K<04>!<21><03>$<24><01>%<25><03>(<28><02>+9<03>.a<03>1<EFBFBD><02>4<00>5<03>7]<01>8<EFBFBD><02>;8<08>@<40><06>E@<01>Fw<05>J<EFBFBD><4A>J<EFBFBD><4A>8K<38><1D><>6<EFBFBD>
<EFBFBD>%<25><04>)r<00>*<2A><>*<2A><>6<EFBFBD>t<EFBFBD>6<EFBFBD><03>/<05>5?<08>=<3D><07>D<EFBFBD><44>6<EFBFBD>r<EFBFBD>6<EFBFBD><36>E2<04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>6<EFBFBD><36><1D><>4<EFBFBD><02><1F><07>%<25><04>'<27><>4<EFBFBD><34><13><>1<EFBFBD>t<10>"'<27>1<EFBFBD>r<EFBFBD>1<EFBFBD><31>"<22><02>%<25><02>(Q<04>+|<04>/<2F><05>4<EFBFBD><02>7<05>;d<>;d<>1<EFBFBD>t<EFBFBD>1<EFBFBD><03>><3E><>1<EFBFBD>r<EFBFBD>1<EFBFBD><00>?<3F><04>C<EFBFBD><05>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>1<EFBFBD><31><1D><>/<2F><07>#<03>&<01>'<27><02>* <04>,<2C><>-C<>-C<>/<2F>x<EFBFBD>/<2F><05>1<EFBFBD><31>/<2F>r<EFBFBD>/<2F><>2C<00>4"<22>4"<22>/<2F>t<EFBFBD>/<2F><03>7~<7E>/<2F>r<EFBFBD>/<2F><>7<EFBFBD><04><"<07>A<EFBFBD><04>E<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><><1D><>.$<06>"<22><01>$<02>&M<03>(<28><01>)<29><01>+R<06>0'<02>2<EFBFBD><03>5<EFBFBD><02>7><07><S<03>?-<05>C{<01>EB<07>J<EFBFBD><4A>K<19>K<19>.$<24><1D><>,Z<02> ~<01>"<03>$<24><08>+<01>,U<00>-d<03>0<EFBFBD><01>2M <0B>9<01>:<3A><03>>2<01>?m<03>Bh<01>C<EFBFBD><05>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>,Z<><1D><>*<2A><03> <02>"<22><02>$<24><07>*<2A><>*<2A><02>-s<07>3<02>5U<03>8u<03>;<07>@!<07>E|<03>HO<03>J<EFBFBD><4A>J<EFBFBD><4A>*<2A><><1D><>(<28> <09>$<24><04>(%<08>.<02>0m<06>5r<03>8<EFBFBD><02>;&<08>@<40><05>ED<02>G<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>(<28><><1D><>&<26><07>"<22><>&<26><><13><>$t <09>F<>$r<>$<18><1D><01>,<2C>,<2C>$t<>$<00> <03>$r<>$<00> <20><01>"<00>#<03>%<25><03>(x<02>*<2A><03>,<2C><04>/<2F><01>1x<04>5 <03>7<EFBFBD><01>9<EFBFBD><07>? <0C>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>$<18><1D><>"E<02> <20><04>$<02>&K<05>*_<01>+<2B><03>/"<02>1S<03>3<EFBFBD><01>5
<00>6
<03>9n<08>><3E><04>B?<3F>"E<><10><>a<02>i <09>B<03><1C><02><05>#1<03>&6<02>(<28> <09>/y<05>3<EFBFBD><01>5<EFBFBD><07>:<3A><05>><3E><03>A<EFBFBD><01>Cf<04>F<EFBFBD><02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>a<><10><><1D><05>+<2B><14><02><16><06>><02>d <09>$<24><01>&<06>*<2A><01>,J<04>/@<40>/@<40><1D>t<EFBFBD><1D><03>2<EFBFBD><32><1D>r<EFBFBD><1D><>2<EFBFBD><02>5}<7D>5}<7D><1D>t<EFBFBD><1D> <0B>?<3F><><1D>r<EFBFBD><1D><00>?<3F><><1D><><10><><1A><02>{ <09><19><06><1E><><1E><><1A>t<EFBFBD><1A> <0B>(<28><><1A>r<EFBFBD><1A><>)<29><02>,b<>,b<><1A>t<EFBFBD><1A><06>2C<32><1A>r<EFBFBD><1A><>2<EFBFBD><02>5C<06>:<3A><01><<3C><02>?!<06>C<EFBFBD><03>Fu<05>J<EFBFBD><4A>J<EFBFBD><4A><1A><><10><><18><04>! <09>e<03><1D><01><1E> <09>%x<01>&<26><06>++<2B>++<2B><18>t<EFBFBD><18>
<EFBFBD>4h<EFBFBD><18>r<EFBFBD><18><>4<EFBFBD><05>8.
<EFBFBD>?<3F><04>B<EFBFBD><02>E<04>HW<48><18><><10><><15><03><04><04>C<>C<><15>x<EFBFBD><15><05> <20><><15>r<EFBFBD><15><>!<21><00>#<23><>#<23><><15>t<EFBFBD><15><05>(<28><><15>r<EFBFBD><15><00>*6<03>-*<08>3<EFBFBD><05>8[<07>><3E><00>@<03>C<EFBFBD><04>H/<04>J<EFBFBD><4A>J<EFBFBD><4A><15><><10><>
<EFBFBD>S<01><19><06><02> <20><03>$S<01>%<25><06>* <02>,C<03>/<2F><01>1l<01>36<07>8<04>:<3A><>; <03>>*<02>?<3F><01>@<40><07>F<02>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A><17><10><>M<03><12><01><14><02><16><03>Q<04>G<><1E><01> <20><07>&m<03>)}<00>*<2A><03>,<2C><02>/%<01>0<EFBFBD><02>3<EFBFBD><01>5&<03>7n<01>9<04><@<40><<3C><01>><3E><06>C<04>Fm<46>Fm<46>Mx<4D>M<04>Ji<4A>Mr<4D>M<>J<EFBFBD><4A>J<EFBFBD><4A>M<><10><><10><07><15><01><17><><17><><10>t<EFBFBD><10><02>&<26><10>r<EFBFBD><10><><1A><01><1C><03>P<04>"<22><02>%/<03>)
<02>+<2B><03>.<2E><04>2t<03>5<EFBFBD><01>7<EFBFBD><02>:<<03><<3C><03>@<40><01>B<00>Cb<06>HC<02>J<EFBFBD><4A>J<EFBFBD><4A><10><><10><><0E> <09>S <09>C<01><1D><><1D><><0E>x<EFBFBD><0E><04>!<21><><0E>r<EFBFBD><0E><>"K<01>#<23><>#<23><><0E>t<EFBFBD><0E><02>&<1E><0E>r<EFBFBD><0E><>&<26><01>(*<2A>(*<2A><0E>t<EFBFBD><0E><06>. <0B><0E>r<EFBFBD><0E><00>.<2E><>/1<01>18<03>4<EFBFBD><01>6\<02>8<EFBFBD><03>:<3A><02>=
<05>A\<02>C<EFBFBD><07>I<02>J<EFBFBD><4A>J<EFBFBD><4A><0E><><10><> <0C><08>n<04><03>L<04><1F><03>#<03>&<01>'<27><02>*[<04>-5<02>/<2F><05>4<EFBFBD><03>8<02>:l<>:l<> <0C>x<EFBFBD> <0C><05>><3E><> <0C>r<EFBFBD> <0C><>?<3F><00>A<EFBFBD><41>A<EFBFBD><41> <0C>t<EFBFBD> <0C><03>D<EFBFBD><44> <0C>r<EFBFBD> <0C><>E<EFBFBD><05>IB<01>J<EFBFBD><4A>J<EFBFBD><4A> <0C><><10><>
<07><15><02> <02>E<07><1F><02>!<21> <09>'<27><04>+X<05>/0<>
<EFBFBD>
<EFBFBD>
<EFBFBD>q?<3F>`<60><07>6Exceptionhandling:Ifthedesiredfileisnotfound,theOPENFILEmethodshouldreturnNILratherthancauseaFILENOTFOUNDerror.Thisissothatthegenericfilesystemcodecancausetheerrorusingtheoriginalfilename,nottheonepackedwithhostanddirectorypassedintotheOPENFILEmethod.Thedeviceshouldfeelfreetosignalanyothererrorsitselfonfailingtoopenthefile,e.g.,FILEWON'TOPENforabusyfile,PROTECTIONERROR,orFILESYSTEMRESOURCESEXCEEDED.Ideally,thiserrorshouldbesignaledinawaythatisresumable,i.e.,sothatausercould,inthebreak,takesomeactiontoremedytheconditionandthentypeOKtocontinue.InmostcasesitsufficesthatalltheinternalfunctionsbelowtheOPENFILEbenamedwithbackslashes,sothattheerrorcodewillchoosetoresumebyrevertingtotheOPENFILEandtryingagain.Thedevicedoesnotneedtoknowaboutthesetofopenfiles(i.e.,thevalueof(OPENP)),andingeneralshouldignoreit.Thatis,thedeviceshouldperformtheopenasiftherewerenootherfilesopenandhencenoconflict.ThegenericfilesystemcodelooksatthestreamreturnedfromtheOPENFILEmethodandthenworriesaboutwhetherthereisactuallyanotherstreamopenbythesamename.Ifthereis,itclosesthenewlyopenedstreamandtheneitherreturnsthepre-existingstream,orcausesaFILEWON'TOPENerrorifthenewandoldaccessmodesareinconflict.Thisdesigniscrufty,butIbelieveitstemsprincipallyfromtherecognitionproblemyoudon'tknowthefullnameofafileuntilyouopenit,soyoucan'ttelluntilthenwhetheryoushouldhavetriedtoopenitinthefirstplace.Itwill,ofcourse,havetobecompletelychangedwhenwegotomultiplestreamsperfile.(REOPENFILENAMEACCESSRECOGPARAMETERSDEVICEOLDSTREAM)ThisisexactlylikeOPENFILE,exceptthatitiscalledafterLOGOUT(orother``after''events)onthenameofanystreamthatwasleftopenoverexit.TheideaistomaintaintheillusionthatthefilereallywasopenoverLOGOUT,butcheckandmakesurenothingchanged.ThegenericfilesystemcodeusestheVALIDATIONfieldtotestwhetherthefilechangedbehindyourback.OLDSTREAMisthestreamthatwasopenbeforeexit,andissuppliedforthebenefitofdeviceswherethereisnopossibilitythatthefilechanged(e.g.,{CORE}),sothattheycanjustreturnOLDSTREAMdirectly.OLDSTREAMisalsoofuseforthosedevicesthathavetocheatinordertomaintaintheillusion.Thiswillhavetochangewhenwegotomultiplestreamsperfile.(GETFILENAMENAMERECOGDEVICE)Performs``recognition''onNAME.Thatis,itreturnsthefullnameofthefilethatwouldbeopenedbyOPENFILEintheindicatedrecognitionmode,orNILifthefileisnotfound.ItisnotnecessarythatOPENFILEactuallybecapableofopeningthefile(thereisnoneedtocheckprotection,forexample).UsedbyINFILEP,OUTFILEP,FULLNAME.(DELETEFILENAMEDEVICE)DeletesthefilenamedNAME,returningitsfullnameonsuccess,NILonfailure.RecognitionmodeisimplicitlyOLDEST.Localdevices,afterrecognizingthefile,shouldmakesurethatitisnotOPENP(openfilescannotbedeleted).ThisandRENAMEFILEareusuallytheonlydevicemethodsthatneedtoknowanythingaboutwhatfilesareopen.(GENERATEFILESDEVICEPATTERNDESIREDPROPSOPTIONS)EnumeratesfilesmatchingPATTERN.Returnsa``filegeneratorobject''oftheform(NEXTFILEFNINFOFN.ArbitraryState).ThisisdescribedinmoregorydetailunderDirectoryEnumeration.<00>/0<>
<EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<00>
<EFBFBD><EFBFBD>hs<EFBFBD><10><>br<08><16><08>#<23><1D><01><02>!t<06>&3<03>(<28><01>)<29><02>,d<05>0<EFBFBD><02>3<17>3<17>bt<>b<07>9<EFBFBD><39>br<>b<01>:N<05>?N<05>C<EFBFBD><05>G<EFBFBD><47>G<EFBFBD><47>bt<>b<02>Ji<4A>br<>b<01>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`.<05>q<03>j<04><1A><00><1B><><1B><>`.t<>`.<03> &<02>#<23><04>'<27><>`.r<>`.<2E>(<05>+<2B><>,<03>.<2E><01>03<01>1<EFBFBD><03>4l<02>6<EFBFBD><06>;9<03>=u<05>A<EFBFBD><03>D<EFBFBD><02>G;<04>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E><10><>^[<02><12><04>+<04><19><02><1B><07> <20><03>#5<04>'2<02>)<29><02>+<2B><02>.`<05>2<EFBFBD><03>5<EFBFBD><03>8<EFBFBD><02>;n<08>A <05>Ej<01>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>^[<5B><10><>\<5C>t<07>I<>\<5C>r<EFBFBD>\<5C><><17><06><1C><>J<02><1F><05>$<05>(r<03>*<2A><03>-<2D><01>/.<05>2<EFBFBD><02>5r<04>8<EFBFBD><05><<3C><05>?<3F><01>A<EFBFBD><06>E<EFBFBD><01>G~<03>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><><10><>Z<EFBFBD><02><12><04><15><04><18><>J<>J<>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><03><1D><04>"<22><03>&X<>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>&<26><02>)4<00>*l<03>-<2D><04>0<EFBFBD><30>0<EFBFBD><30>Z<EFBFBD>t<EFBFBD>Z<EFBFBD> <09>:<04>>6<>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><00>?!<01>@<40><>@<40><>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><03>E_<05>K@<40>K@<40>Z<EFBFBD><5A><10><>X<EFBFBD><08><07><1F><>X<EFBFBD>r<EFBFBD>X<EFBFBD><00> u<> <20><07>%<25><03>(<04>+i<05>/<2F><01>1<EFBFBD><07>6<EFBFBD><01>8J<00>9S<02>< <03>><3E><01>?<3F> <09>F<EFBFBD><04>I+<01>J<EFBFBD><4A>J<EFBFBD><4A>X<EFBFBD><58><10><>W<03>i<00><14><03><17><05><1B><01><1D><02><1F><05>$)<03>'-<03>*<2A><05>.<2E><01>0<EFBFBD><05>5<EFBFBD><02>8 <08>>/<02>@<40><03>D!<03>G;<3B>G;<3B>Wt<>W<01>H<EFBFBD><48>Wr<>W<18>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>W<18><10><>UE<08>v<><16><01><18><03><1B><04>J<01> <20><07>%_<03>(<02>)<29><02>,?<07>1=<08>7"<04>;<02>=d<>=d<>UEt<45>UE<07>D<1C>UEr<45>UE<55>D<EFBFBD><01>Fk<04>J<EFBFBD><4A>J<EFBFBD><4A>UE<55><10><>Sr<03><13> <0B><01><1C><03>|<02>!<21><04>%<03>(N<03>*<2A><05>/M<01>0<EFBFBD><05>5<EFBFBD><01>7z<08>=2<01>><3E><02>A<12>A<12>Srt<72>Sr<07>G<EFBFBD><47>Srr<72>Sr<53>H9<02>J<EFBFBD><4A>J<EFBFBD><4A>Sr<53><10><>Q<EFBFBD><05>c<05><17><>Q<EFBFBD><51><10><>N<EFBFBD><02>N<05>v<03><1A><02><1C><03> (<01>!<21><03>%_<04>)$<02>+j<02>-m<01>/ <03>2c<04>55<05>8(<02>:m<04>=<3D><01>?<3F><>?<3F><>N<EFBFBD>t<EFBFBD>N<EFBFBD><06>E{<7B>N<EFBFBD>r<EFBFBD>N<EFBFBD><01>F<EFBFBD><02>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>N<EFBFBD><4E><10><>L<EFBFBD><06>8<05><19><05><1D><02> <20>|<03>"<22><02>$1<02>&f<05>*~<05>.<2E><06>3<EFBFBD><02>6,<03>9s<01>:<3A><01></<04>?<3F><03>B<EFBFBD><01>D<EFBFBD><04>H<04>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C><10><>K<03><13><02><16><04><1A><01><1C><08>!<21><>";<02>%<06>)<29><03>,"<05>0<EFBFBD><03>3<EFBFBD><04>7]<01>8<EFBFBD><02>;A<05>?<3F><07>E4<03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>K<1E><10><>ITt<07>I<>ITr<54>IT<49><17><05><1C><02>U<03>"h<06>'%<04>*<2A><06>0*<04>3<EFBFBD><01>4<EFBFBD><07>9<EFBFBD><06>><3E><05>CI<03>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>IT<49><10><>G<EFBFBD><03><13><04><17><>\<01><19><04>4<02><1E><01> <05>#<23><02>&.<04>*<05>.<2E><05>3,<02>5<EFBFBD><03>8<EFBFBD><05><<3C><06>A;<02>C<EFBFBD> <0B>J<EFBFBD><4A>J<EFBFBD><4A>G<EFBFBD><47><10><>E<EFBFBD><06>/<01><16><05><1A><00><1B><><1B><>E<EFBFBD>t<EFBFBD>E<EFBFBD><03> <04>%#<03>(<>E<EFBFBD>r<EFBFBD>E<EFBFBD><45>(<28><04>,%<01>-]<02>/<2F><02>2Y<02>4<EFBFBD><02>7'<05>;
<04>?9<02>Ae<01>B<EFBFBD><08>G<EFBFBD><47>HZ<48>HZ<48>E<EFBFBD>s<EFBFBD>E<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>E<EFBFBD><45><10><>D!<05><13><01><06><18><02><1A><00>O<06> <01> <04>#
<EFBFBD>(<28><03>+5<02>-
<EFBFBD>2<EFBFBD>
<EFBFBD>:<04><<3C><03>?<3F><02>A<EFBFBD><03>C<EFBFBD><03>F<EFBFBD><01>G<EFBFBD><00>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>D!<21><10><>B<EFBFBD><04><02>4<03><17><02>%<01>{<02><1C><04>%<03> <20><04>#<23><03>%<25><06>*<02>,2<05>/<2F><03>2><04>4<EFBFBD><01>6
<03>8<EFBFBD><01>9<EFBFBD><01>:<3A><02><<3C><04>?<05>B
<EFBFBD>Be<01>C}<04>E<EFBFBD><01>G<06>J<EFBFBD><4A>J<EFBFBD><4A>B<EFBFBD><42><10><>@<40><03> <01>><01><15> <09><06>G<03>"<01>#<23><01>%<01>&G<07>*<2A><06>.Q<02>0#<04>1<EFBFBD><31>@<40>r<EFBFBD>@<40><>1<EFBFBD><31>@<40><> <09><>=<3D>t
<EFBFBD><08><08>=<3D>x<EFBFBD>=<3D><03><17><>=<3D>t<EFBFBD>=<3D><>W<>W<>=<3D>x<EFBFBD>=<3D><05><1C><>=<3D>t<EFBFBD>=<3D><><1D><><1D><>=<3D>x<EFBFBD>=<3D><04>!<21><>=<3D>t<EFBFBD>=<3D><>"<22><>"<22><>=<3D>x<EFBFBD>=<3D> <09>*]<5D>=<3D>t<EFBFBD>=<3D><>+4<>+4<>=<3D>x<EFBFBD>=<3D><05>/<2F><>=<3D>t<EFBFBD>=<3D><>0z<30>0z<30>=<3D>x<EFBFBD>=<3D><08>7<EFBFBD><37>=<3D>t<EFBFBD>=<3D><00>8<EFBFBD><38>=<3D><><10><>:<3A>r<03><13><01><06><19><03>/<2F>/<2F>:<3A>t<EFBFBD>:<3A><07>"<22><>:<3A>r<EFBFBD>:<3A><00>#<23><05>'<27><03>*<2A><01>,<01>-o<05>1Y<04>4<EFBFBD><34>4<EFBFBD><34>:<3A>t<EFBFBD>:<3A><05>9<EFBFBD><39>:<3A>r<EFBFBD>:<3A><>:<02><C<04>?<3F><08>Df<06>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>:<3A><><10><>8<EFBFBD><02><12><03><16><01>-<02><1A><05><03>!<21><02>$g<03>&<26><03>*$<03>-*<04>0<18>0<EFBFBD><02>3N<03>62<01>7<EFBFBD><01>9$<07>><3E><02>A<07>E<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>8<EFBFBD><38><10><>7#<03><12><05><16><02>j<03><1C><03><1F><><1F><>7#t<>7#<05>$<24><>7#r<>7#<00>%<25><02>(X<04>,6<02>.<2E><03>2<EFBFBD><03>5<EFBFBD><06>:<3A><07>@i<>@<40><02>C<EFBFBD><06>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>7#<23><10><>5P<05><14><03><17><03><1A><02><1C><><1C><>5Pt<50>5P <09>%V<>5Pr<50>5P<35>%<25><04>(<28><01>*.<03>,<2C><06>1<EFBFBD><02>3<EFBFBD><03>6<06>;Q<05>?<3F><03>B<EFBFBD><04>E<EFBFBD><45>5P<35><10><>2cx<08><17><>2cr<63>2c<32>j<01><19><02>K<05> <20><03>#<23><02>&T<03>)<29><05>.(<04>16<02>3<EFBFBD><01>5o<07>;<02>=M<02>?<3F><06>Dg<01>F*<06>J<EFBFBD><4A>J<EFBFBD><4A>2c<32><10><>0<EFBFBD><04><14><04>U<01><19><01><1B>
<EFBFBD>"w<03>%V<02>'<27><03>*A<06>/<2F><05>3+<2B>3+<2B>0<EFBFBD>t<EFBFBD>0<EFBFBD><05>85<38>0<EFBFBD>r<EFBFBD>0<EFBFBD><01>9<EFBFBD><01>;t<03>>S<03>At<02>D<03>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>0<EFBFBD><30><10><>.<2E>x<08><17><>.<2E>r<EFBFBD>.<2E><>Z<08><1D><><1E><1E>.<2E>x<EFBFBD>.<2E><08>%f<>.<2E>r<EFBFBD>.<2E><>%<25><01>'N<03>*<01>+<2B><02>.8<02>0p<04>4<06>8<EFBFBD><03>;<3B><03>><3E><01>@{<04>D<01>E<EFBFBD><04>IB<01>J<EFBFBD><4A>J<EFBFBD><4A>.<2E><><10><>,<2C><07><02>K<08><1C><>,<2C><><10><>*s<03><12><03><14><03>]<01><18><05>#<03><1E><01> <20><01>!<21><01>##<07>'^<06>+-<02>,<2C><04>.<2E><>*r<>*<18>.<2E><>*<18> <09><>&<26>t <0B><14><><14><>&<26>x<EFBFBD>&<26><03>W<>&<26>t<EFBFBD>&<26><>.<2E>.<2E>&<26>x<EFBFBD>&<26><04>*<2A>&<26>t<EFBFBD>&<26><><01><01>&<26>x<EFBFBD>&<26><05>"p<>&<26>t<EFBFBD>&<26><00>#M<>&<26><><10><>#<23>r<07>K<0E><1E><01> <20><> <20><>#<23>x<EFBFBD>#<23><03>$<01>#<23>r<EFBFBD>#<23><00>$<24><>%<03>(,<02>)<29><01>*<2A><06>/z<02>1<EFBFBD><03>4<03>7<EFBFBD><01>94<02>;i<03>=<3D><03>@K<04>DL<01>F<05>J<EFBFBD><4A>J<EFBFBD><4A>#<23><><10><>"$<01>`<60>`<60>"$t<>"$<07><18>"$r<>"$<24>q<01><1A><02>$<08>"<22>
<EFBFBD>)<29><04>-<2D><01>/y<>/y<>"$t<>"$<02>1<EFBFBD><31>"$r<>"$<24>2X<01>3<EFBFBD><02>5<EFBFBD><03>7<EFBFBD><01>98<02>;<05>?<3F><>@
<01>AX<01>B<EFBFBD><02>D<EFBFBD><08>J<EFBFBD><4A>J<EFBFBD><4A>"$<24><10><> Q<03>P<>P<> Qt<51> Q<07><08> Qr<51> Q<><07><1F><01>!d<06>&R<01>'<27><06>-7<02>/<2F><03>1<EFBFBD><05>5<EFBFBD><01>70<01>9'<03><t<01>><04>A<EFBFBD>
<EFBFBD>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A> Q<><10><>~<08><16><><03>f<01>4<>4<>~t<>~<06>"<15>~r<>~<00>"<22><>"<22><>~t<>~<07>)}<7D>~r<>~<00>*-<2D>*-<2D>~t<>~<07>0<EFBFBD><30>~r<>~<00>1B<31>~<7E> <09><>8t
<EFBFBD><08><08>8x<38>8<03><17><>8t<38>8<>W<>W<>8x<38>8<05><1C><>8t<38>8<00><1D><>8<><10><>Kr<06><15><02><17><03>a<04><1E><><1E><>Kx<4B>K<03>"j<>Kr<4B>K<00>#S<08>)d<02>+I<03>-<2D><03>1<EFBFBD><01>3<EFBFBD><07>8<EFBFBD><38>8<EFBFBD><38>Kt<4B>K<02>;S<>Kr<4B>K<>;<3B><01>=<3D><07>B<EFBFBD><42>C@
<EFBFBD>J<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>K<><10><>x<03>`<01><15> <09><1B><><1B><>xt<78>x<05> <20><>xr<78>x<00>!<21><>";<04>%<25><07>+<04>.L
<EFBFBD>5<EFBFBD><02>7<EFBFBD><04>:<3A><05>?<03>B<EFBFBD><03>E<EFBFBD><03>H[<01>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>x<><10><><14><02><12><><12><><14>t<EFBFBD><14><04><1C><14>r<EFBFBD><14><><17><04>V<04>&<02> <20><02>"<22><01>$<24><08>*J<>*<2A><>*<2A><><14>s<EFBFBD><14><03>-<02>/5 <09>7.<02>8<EFBFBD><06><<3C><02>>z<03>@<40><05>D8<06>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A><14><><10><><12><03><01>O<03>'<07><1B><04><1E><03>!
<04>#?<02>$<24><04>'<27><><12>r<EFBFBD><12><>'<27><><12><> <09><><0F>t
<EFBFBD><16><><16><><0F>x<EFBFBD><0F><05><1A><><0F>t<EFBFBD><0F><><1B><><1B><><0F>x<EFBFBD><0F><06>!-<2D><0F>t<EFBFBD><0F><>"<04>"<04><0F>x<EFBFBD><0F> <0B>*<2A><><0F>t<EFBFBD><0F><>+<2B><>+<2B><><0F>x<EFBFBD><0F><06>1<01><0F>t<EFBFBD><0F><00>1<EFBFBD><31><0F><><10><> <0C>r <09><04><1A><07> <20><> <20><> <0C>x<EFBFBD> <0C><06>&<1D> <0C>r<EFBFBD> <0C><00>&<26><>'Y<06>,{<00>-<2D><05>0<EFBFBD><08>6<EFBFBD><07>;Q<01><<3C><02>?C<03>B<EFBFBD><00>C<0E> <0C>x<EFBFBD> <0C> <09>Ji<4A> <0C>r<EFBFBD> <0C><>J<EFBFBD><4A>J<EFBFBD><4A> <0C><><10><>
<EFBFBD>x<05><00>
<EFBFBD>r<EFBFBD>
<EFBFBD><EFBFBD>X<00><07><07>
<EFBFBD>x<EFBFBD>
<EFBFBD>
<EFBFBD><1C><>
<EFBFBD>r<EFBFBD>
<EFBFBD><01><1D><><<03>!&<01>"d<08>(\<01>)<29><03>-@<03>06<05>3<EFBFBD><04>7<EFBFBD><37>7<EFBFBD><37>
<EFBFBD>z<EFBFBD>
<EFBFBD><08>=<3D>
<EFBFBD>E-<2D>
<EFBFBD>r<EFBFBD>
<EFBFBD><00>E<EFBFBD><45>
<EFBFBD> <0B>
<EFBFBD>q?<3F>`<60>7(RENAMEFILEOLDNAMENEWNAMEDEVICE)RenamesthefilenamedOLDNAMEtohavenameNEWNAME.Returnsthefullnameofthenewfileifsuccessful,NILifnot.RecognitionmodeisimplicitlyOLDforOLDNAME,NEWforNEWNAME.ThegenericfilesystemcodeinvokesthismethodtoimplementthefunctionRENAMEFILEonlywhenthehostfieldsofbothfilenamesmaptothesamedevice.Defaultsto\GENERIC.RENAMEFILE,whichisalsothefunctionthatthesystemcallswhentheoldandnewnamesareondifferentdevices.\GENERIC.RENAMEFILEisdefinedtocopyOLDNAMEtoNEWNAMEandthendeleteOLDNAME.Thefollowingmethodsareinvokedforopenstreams.Theyareallrequired:(BINSTREAM)ReturnsthenextbyteofinputfromSTREAM,ortakestheappropriateactionifatendoffile.Unlessadevicehasagoodreasonnotto,itshouldcall(\EOF.ACTIONSTREAM)atendoffile/stream.ThedeviceBINmethodisactuallynotuseddirectly.Rather,everystreamhasaSTRMBINFNfield,whichisthefunctionactuallyappliedtodotheinput.TheSTRMBINFNfieldcouldthusbeusedtofakeaspecializationofthedevicedifferingonlyintheBINmethod.However,thetypicaluseofSTRMBINFNistotemporarilyoverridethedevicedefault.Inparticular,settingastream'saccesstoINPUTorBOTHautomaticallysetsthestream'sSTRMBINFNtobethedevice'sBINmethod;settingaccesstoNILorOUTPUTsetstheSTRMBINFNtobeanerror.Thisrelievesthedevice'sBINmethodofanyneedtocheckthestream'saccessoneverycalltoBIN.SomenetworkstreamstemporarilysettheirSTRMBINFNtobeaninputeaterwhentheyreceivea``clearoutput''command.Currently,allInterlisp-Dstreamshavebytesize8,soBINalwaysreturnsan8-bitinteger.CallstothefunctionBINarecompiledintotheBINopcode,whichrunsinmicrocodeonsomemachinesiftherequirementsforitaremet.Moreonthislater.(BOUTSTREAMBYTE)OutputsBYTEtoSTREAM.AswithBIN,thismethodisnotuseddirectly.Rather,everystreamhasaSTRMBOUTFNfield,whichisthefunctionactuallyappliedtodotheoutput.Settingastream'saccesstoOUTPUTorBOTHautomaticallysetsthestream'sSTRMBOUTFNtobethedevice'sBOUTmethod.ThereexistsaBOUTopcode,butthedesignisincomplete.(PEEKBINSTREAMNOERRORFLG)ReturnsthenextinputbytefromSTREAM,butdoesnotadvancethestreampointer.ThusasubsequentPEEKBINorBINwillreturnthesamebyte.Atendofstream,thedeviceshouldtakeeofactionaswithBIN,unlessNOERRORFLGistrue,inwhichcaseitshouldreturnNIL.(READPSTREAMFLG)ReturnstrueifinputisavailablefromSTREAM,thatis,ifaBINrightnowwouldsucceedwithoutwaiting.Defaultsto\GENERIC.READP,whichusesEOFPandPEEKBIN.<00>E<EFBFBD><45>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<EFBFBD><EFBFBD>hsp<00>Jj<4A>hs<68> <09><>b5t
<EFBFBD><08><08>b5x<35>b5<06><19><>b5t<35>b5<62><1A><><1A><>b5x<35>b5<06>!<01>b5t<35>b5<62>!<21><>!<21><>b5x<35>b5<05>&G<>b5t<35>b5<00>'$<24>b5<62><10><>_Hr<06>U<02><18><03><1A><04><1E><1E>_Hx<48>_H<06>%<10>_Hr<48>_H<5F>%k<01>&<26><03>*<03>-<2D><>-<2D><>_Hx<48>_H<06>3<EFBFBD><33>_Hr<48>_H<00>4|<7C>4<EFBFBD><06>9<EFBFBD><02><<03>>q<03>B<01>C<EFBFBD><02>E<EFBFBD><02>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>_H<5F><10><>]~<01><11>
<EFBFBD>~<7E>~<7E>]~t<>]~<02><03>]~r<>]~<7E>{<01><1C><03><1F><> 
<EFBFBD>'<27><03>+f<01>,<2C> <09>2<EFBFBD><32>2<EFBFBD><32>]~t<>]~<02>5Q<35>]~r<>]~<7E>5<EFBFBD><02>7<EFBFBD><37>7<EFBFBD><37>]~x<>]~<06>=<3D><>]~r<>]~<00>><3E><>><3E><>]~t<>]~<02>A=<3D>]~r<>]~<7E>A<EFBFBD><02>C<EFBFBD><43>C<EFBFBD><43>]~x<>]~<06>J<12>]~r<>]~<00>J<EFBFBD><4A>K<19>K<19>]~<7E><10><>[<5B><02>_<06><03>|<05><1E><03>"*<06>'<03>)<29><05>.<2E><01>0Y<08>71<02>9<EFBFBD><07>><3E><>><3E><>[<5B>t<EFBFBD>[<5B> <09>GZ<47>[<5B>r<EFBFBD>[<5B><>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>[<5B><><10><>Y<EFBFBD><03>,<02>s<03>S<05> <20><01>#<23><03>'<27><08>.<2E><02>2<EFBFBD><01>5T<02>8<EFBFBD><03>=<06>B<EFBFBD><42>C<EFBFBD><07>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>Y<EFBFBD><59><10><>Xt<12> <20><>Xr<>X<00>!K<04>%=<01>&<26><03>)B<02>+<2B><07>0<EFBFBD><03>3<EFBFBD><02>5<EFBFBD><05>:?<04>=3<03>@<40><02>C<02>Ec<02>H<02>J<EFBFBD><4A>J<EFBFBD><4A>X<0E><10><>V;<04><02><17><01><19><08><1F><07>%<1F>%<25><>%<25><>V;t<>V;<12>5<EFBFBD><35>V;r<>V;<3B>6<EFBFBD><01>8D<06>=<01>?j<03>B<EFBFBD><42>B<EFBFBD><42>V;x<>V;<06>H<EFBFBD><48>V;r<>V;<3B>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>V;<3B><10><>Thx<06><16><>Thr<68>Th<54><02><19><03><1C><05> v<> v<>Thx<68>Th<06>&h<>Thr<68>Th<00>&<26><>Th<54> <09><>P<EFBFBD><02> <0C><08>{<06><17><02><19><06><02>!<03>$`<07>)|<7C>)<29><03>--<02>/S<02>1<08>6<EFBFBD><36>P<EFBFBD><50> <09><>M<EFBFBD>t<03>'<27>'<27>M<EFBFBD>x<EFBFBD>M<EFBFBD><05><12><>M<EFBFBD>t<EFBFBD>M<EFBFBD><00><13><>M<EFBFBD><4D><10><>J<EFBFBD>r<06><15><02>C<03>b<03><1E><01> H<04>#<23><03>'u<>'u<>J<EFBFBD>x<EFBFBD>J<EFBFBD><05>,C<>J<EFBFBD>r<EFBFBD>J<EFBFBD><00>-0<01>/<04>2<EFBFBD><02>4<EFBFBD>
<EFBFBD><e<05>@<40><01>A<EFBFBD><01>C<EFBFBD><02>Fh<01>H0<04>J<EFBFBD><4A>K<19>K<19>J<EFBFBD><4A><10><>I<05>#<00>h<05><1A><02>R<00><1E><03>" <05>&<26><02>)<02>+><01>,<2C><05>1?<03>3<EFBFBD><00>4[<5B>It<>I
<EFBFBD>><3E><>><3E><>Ix<>I<05>C<EFBFBD><43>It<>I<00>D[<5B>Ir<>I<03>D<EFBFBD><01>F<EFBFBD><02>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>I<03><10><>G0 <0B>i<>G0<47><10><>DL<02>p<05><17><><17><>DLt<4C>DL<02>?<3F>DLr<4C>DL<44><1A><05><1F><01>!Q<07>&k<02>(<28><03>,*<08>1z<31>2<06>6<EFBFBD><04>:<3A><05>?+<02>A<EFBFBD><00>B<EFBFBD><42>B<EFBFBD><42>DLt<4C>DL<08>Jj<4A>DLr<4C>DL<44>J<EFBFBD><4A>J<EFBFBD><4A>DL<44><10><>By<05><13><04><17><01>><02><1B><07> <20><07>%<25><06>*<2A><01>,3<01>.<02>0c<05>4G<34>4<EFBFBD><02>7o<37>7o<37>Byt<79>By<08>><3E><>Byr<79>By<42>?i<04>B|<04>F)<03>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>By<42><10><>@<40><03><13><01>8<03><00>$
<EFBFBD>!l<01>#<02>%B<05>)c<08>.<2E><03>1<EFBFBD><01>3h<02>5<EFBFBD><35>5<EFBFBD><35>@<40>t<EFBFBD>@<40><02>8+<2B>@<40>r<EFBFBD>@<40><>8<EFBFBD><06>=<3D><>>3<07>DD<02>F<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>@<40><><10><>><3E><02><12><01><14><><14><>><3E>t<EFBFBD>><3E><08>(<28>><3E>r<EFBFBD>><3E><><1C><01><1D><01><1F>
<EFBFBD>&<26><07>,5<02>.<2E><05>2<EFBFBD><07>7<EFBFBD><37>8 <01>9<EFBFBD>
<EFBFBD>@=<06>D<EFBFBD><00>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>><3E><><10><>=<05><14><01>{<7B>{<7B>=t<>=<04><1A><>=r<>=<00>M<01>)<29>)<29>=t<>=<03> <20><>=r<>=<00>!# <0C>)<29><03>,_<02>.<2E><07>4:<3A>4:<3A>=t<>=<08>;<3B><>=r<>=<00><g<01>>-<01>@7<02>B<EFBFBD><07>G<EFBFBD><47>G<EFBFBD><47>=t<>=<02>Ji<4A>=r<>=<00>J<EFBFBD><4A>J<EFBFBD><4A>=<00><10><>;-<06><06>W<05>U<01><1F><><1F><>;-t<>;-<02>"y<>;-r<>;-<2D>"<22><01>$<24><>$<24><>;-t<>;-<05>)<29><>;-r<>;-<2D>*'<03>,<2C><02>/
<EFBFBD>/
<EFBFBD>;-t<>;-<08>6<EFBFBD><36>;-r<>;-<2D>7<01>8<EFBFBD><01>:<3A><01><t<05>@-<2D>@<40><03>C<EFBFBD><07>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>;-<2D><10><>9Z<07><15><><15><>9Zt<5A>9Z<02> <0C>9Zr<5A>9Z<39>j<05>J<01><1E><02>!U<03>$<24><01>&<04>)<29><02>+<2B><07>1!<05>5<01>6<EFBFBD><04>:o<03><<3C><01>>W<>>W<>9Zt<5A>9Z<02>@<40><>9Zr<5A>9Z<00>A<EFBFBD><41>A<EFBFBD><03>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>9Z<39><10><>7<EFBFBD><06>f
<EFBFBD><1C><02><1E><04>!<21><>!<21><>7<EFBFBD>t<EFBFBD>7<EFBFBD><08>)a<>7<EFBFBD>r<EFBFBD>7<EFBFBD><37>)<29><01>+Y<01>-,<01>/<04>2<EFBFBD><04>5<EFBFBD><03>9i<03><[<06>@<40><00>A<EFBFBD><06>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>7<EFBFBD><37><10><>5<EFBFBD><07><16><>5<EFBFBD><35><10><>2<EFBFBD> <09><16><02><18>
<EFBFBD><1F><06>$[<03>'s<07>,x<01>-<2D><01>/n<>/n<>2<EFBFBD>t<EFBFBD>2<EFBFBD><02>1<EFBFBD><31>2<EFBFBD>r<EFBFBD>2<EFBFBD><32>2K<05>6<EFBFBD><06>;<01><<3C><04>?<3F><07>DN<44>2<EFBFBD><32><10><>/<2F><04><13><01><15><02><17><07>m<>m<>/<2F>t<EFBFBD>/<2F><02><1F><>/<2F>r<EFBFBD>/<2F><> r<02>"<22><07>(<28><03>+<2B><02>-<2D><>-<2D><>/<2F>t<EFBFBD>/<2F><02>0b<30>/<2F>r<EFBFBD>/<2F><>0<EFBFBD><06>5<EFBFBD><04>9<EFBFBD><03>=<01>><3E><08>E^<01>G^<03>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><><10><>.<07>h<01><17><02><19> <0B>!<21><02>#<23><01>%!<02>'G<03>*2<>*<2A><03>.<01>/<2F><03>2d<05>5_<35>.<10> <09><>*<2A>t<04><0E><><0E><>*<2A>x<EFBFBD>*<2A><05><13><>*<2A>t<EFBFBD>*<2A><><14><><14><>*<2A>x<EFBFBD>*<2A><03><17><>*<2A>t<EFBFBD>*<2A><00><18><>*<2A><><10><>'<27>r<06><15><><15><>'<27>x<EFBFBD>'<27><03><18><>'<27>r<EFBFBD>'<27><><01><1A><><1A><>'<27>x<EFBFBD>'<27><05>e<>'<27>r<EFBFBD>'<27><00> <18> t<01>"[<03>%J<>%J<>'<27>t<EFBFBD>'<27><02>'<27><>'<27>r<EFBFBD>'<27><00>(<28><03>*<2A><05>/<2F><01>1<02>3c<03>6t<08>;<3B><>;<3B><06>@<40><04>D6<05>H{<02>J<EFBFBD><4A>J<EFBFBD><4A>'<27><><10><>&<00><11><><11><>&t<>& <09><13>&r<>&<13><1A><05><04>!<21><01>#W<02>%<25><07>+ <07>0<06>4<EFBFBD><01>6<EFBFBD><01>8z<02>:<3A><06>?~<7E>?<3F><06>D<EFBFBD><00>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>&<13><10><>$@<05><14><01><1F><1F>$@t<>$@<05>)<29>$@r<>$@<40><1B><01>H<>H<>$@t<>$@<03> <20><>$@r<>$@<40>! <0C>)h<03>+<2B><02>.=<07>3r<33>3r<33>$@t<>$@ <09>;<3B><>$@r<>$@<40><H<01>=<3D><01>?<3F><02>B<07>G
<EFBFBD>G
<EFBFBD>$@t<>$@<03>Ji<4A>$@r<>$@<40>J<EFBFBD><4A>J<EFBFBD><4A>$@<40><10><>"m<06>p<>"m<><10><><1F><04>c<05><17><00><18><><18><><1F>t<EFBFBD><1F><03>A<><1F>r<EFBFBD><1F><><1C><06>!<21><02>#<23><02>& <05>**<01>+h
<EFBFBD>2J<EFBFBD><1F><> <09><>Ct<07><11><><11><>Cx<43>C<05>Q<>Ct<43>C<>(<28>(<28>Cx<43>C <09><18>Ct<43>C<00><1F><>C<><10><>Vr<06><15><02>\<03><1B><04>J<03>"t<03>%<25><>%<25><>Vx<56>V<05>*<2A><>Vr<56>V<00>+<2B><02>.X<03>1<EFBFBD><02>42<06>9<EFBFBD><02><<05>@<40><07>E<EFBFBD><45>Fv<03>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>V<><10><><17> <09><17><><17><><17>t<EFBFBD><17><06>z<><17>r<EFBFBD><17><><1D><01><1F><><1F><><17>t<EFBFBD><17><02>"<11><17>r<EFBFBD><17><>"{<03>%<05>)<02>+\<03>.<2E><04>2<07>2q<01>4P<02>6<EFBFBD><01>8<EFBFBD><06>=3<02>?v<05>C<EFBFBD><05>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A><17><><10><><15><02><12><05><16><01>)<03><14><14><15>t<EFBFBD><15><02><1D><><15>r<EFBFBD><15><00>I<05>"<<3C>"<<3C><15>x<EFBFBD><15> <09>*,<2C><15>r<EFBFBD><15><>*<2A><01>+<2B><04>.<2E><01>0O<04>4,<03>6<EFBFBD><01>8<05><^<05>@]<5D>@]<5D><15>t<EFBFBD><15><02>B<EFBFBD><42><15>r<EFBFBD><15><00>C?<3F><15><> <09><>st<05><0F><><0F><>sx<73>s<05><14><>st<73>s<>z<>z<>sx<73>s<02><17><>st<73>s<00><18><>s<><10><><0F>r<06><15><03>u<01><19><04>J<01><1E><08>$9<03>'<27><>'<27><><0F>x<EFBFBD><0F><05>,S<><0F>r<EFBFBD><0F><00>-<03>/<2F><02>1t<01>2<EFBFBD><00>3<EFBFBD><33>3<EFBFBD><33><0F>t<EFBFBD><0F><02>6R<36><0F>r<EFBFBD><0F><>6<EFBFBD><04>9<EFBFBD><02><<3C><04>@<40><06>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A><0F><><10><>
<EFBFBD><07><15><><15><07>5<01><1C><><1C><>
<EFBFBD>t<EFBFBD>
<EFBFBD>
<EFBFBD>(w<>
<EFBFBD>r<EFBFBD>
<EFBFBD><00>)'<04>-<03>/<2F><>/<2F><>
<EFBFBD>t<EFBFBD>
<EFBFBD><03>3+<2B>
<EFBFBD>r<EFBFBD>
<EFBFBD><EFBFBD>3<EFBFBD><02>6 <0C>6 <0C>
<EFBFBD>t<EFBFBD>
<EFBFBD><06>;<3B><>
<EFBFBD>r<EFBFBD>
<EFBFBD><00><J<>
<EFBFBD><08>
<EFBFBD>q?<3F>`<60>,8Roughlyspeaking,READPisthecomplementofEOFPforstreamsthatarenotarrivinginrealtime.Itisinterestinglydifferentfornetworkstreams,orthekeyboard.FLGisabitofcruftthatnoteveryonepaysattentionto,andmaybeflushedatsomepoint:ifFLGisNIL,thenREADPshouldreturnNILiftheonlyinputwaitingisanendoflinecharacter.(EOFPSTREAM)ReturnstruewhenSTREAMis``atendoffile'',i.e.,aBINwouldcauseanendoffileactiontooccur.Notethatforanetworkstream,itispossibleforbothEOFPandREADPtobefalsesimultaneously,viz.whenthereisnoinputwaiting(bufferedlocally),buttheremoteendofthestreamhasnotindicatedthatthereisnomoreinput.TherearesomewhocallEOFPonstreamsopenonlyforoutput.Thisisacrock;outputstreamsarealwaysatendoffile.Buttoavoidcomplaints,adevicecouldreturnTforEOFPonanoutputstream.(BLOCKINSTREAMBUFFERBYTEOFFSETNBYTES)Performsbulkinputtransfer:retrievesthenextNBYTESbytesfromSTREAMandstorestheminsuccessivebytepositionsinBUFFERstartingatBYTEOFFSET.Defaultsto\GENERIC.BINS,whichrepeatedlycallsBINand\PUTBASEBYTE.Itisalmostalwaysthecasethatadevicewithanon-trivialBLOCKINmethodcanbemadetobeaBuffereddevice,therebybenefitingfromotherBufferedoperationsaswell.(BLOCKOUTSTREAMBUFFERBYTEOFFSETNBYTES)Performsbulkoutputtransfer:outputsNBYTESbytestoSTREAM,takingthebytesfromBUFFERstartingatBYTEOFFSET.Defaultsto\GENERIC.BOUTS,whichrepeatedlycalls\GETBASEBYTEandBOUT.(FORCEOUTPUTSTREAMWAITFORFINISH)ForcestoitsultimatedestinationanyoutputbufferedonSTREAMbutnotyetsent.WAITFORFINISHmeansthatthefunctionshouldnotreturnuntilitisconfidentthattheoutputhasreacheditsdestinationandbeencommitted.DefaultstoNILL,whichisreasonableforunbufferedstreams.Forexample,foranetworkstream,FORCEOUTPUTsendsthecurrentpacketbeingbufferedup.Forabufferedstreamtothedisk,FORCEOUTPUTwritesouttothediskany``dirty''pages,andmakessurethefileisinsuchastatethatifthemachinewerebootedafterFORCEOUTPUTreturns,thatthefilecouldbesuccessfullyreopenedwithnoinformationlost.(GETFILEINFONAME/STREAMATTRIBUTEDEVICE)ReturnsthevalueofthespecifiedATTRIBUTEofNAME/STREAM,whichcanbeanopenStreamorthenameofa(closed)file.ReturnsNILforattributesitdoesn'tknowabout.Itisconsideredgoodcitizenship,thoughnotabsolutelyrequired,toknowaboutthefollowingattributes:LENGTHLengthofthestream/fileinbytes.Ifthedevice'smethodreturnsNIL,butthestreamisrandomaccess,thegenericGETFILEINFOcodetriesthedevice'sGETEOFPTRmethodinstead.SIZELengthinpages,i.e.,(FOLDHIlengthBYTESPERPAGE).<00><J<>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<00>
<EFBFBD><EFBFBD>hs<EFBFBD><10><>br<06>0<08>><3E>><3E>bt<>b<04> q<>br<>b<01>!<01>"v<02>$<24> <09>,<2C><01>.|<7C>.|<7C>bt<>b<03>1<EFBFBD><31>br<>b<01>2g<02>4<EFBFBD><06>9<EFBFBD><03><<3C><02>><3E><02>A\<07>F<EFBFBD><01>H9<03>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`.<04><13><>6<01><15><01><16> <0C>V<08>#<23><02>%<25><06>*<2A><07>0<01>1<EFBFBD><02>3<EFBFBD><08>9<EFBFBD><39>`.<2E><10><>]Jx<02><12><>]Jr<4A>]J<>(<01>j<00>j<02>\<01><18><04><03><1E><02> <20><07>&<26><03>)<29><08>/><02>1<02>3<EFBFBD><02>6<EFBFBD><01>8G<06><<3C><01>>g<03>A<EFBFBD><05>E<EFBFBD><01>F<EFBFBD><46>F<EFBFBD><46>]Jx<4A>]J<02>I+<2B>]Jr<4A>]J<>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>]J<><10><>[<5B>t<02><16>[<5B>r<EFBFBD>[<5B><00><13><03><16><><16><>[<5B>t<EFBFBD>[<5B><04><1A><>[<5B>r<EFBFBD>[<5B><>H<05><1F><05>#<23><>#<23><>[<5B>t<EFBFBD>[<5B><02>&<16>[<5B>r<EFBFBD>[<5B><>&n<01>'<27><02>)<29><03>,<2C><04>06<06>4<EFBFBD><01>6<01>7<EFBFBD><02>:b<01>;<3B><03>>t <09>D0<44>[<5B><> <09><>X:t<04><0E><><0E><>X:x<>X:<05><13><>X:t<>X:<00><14><>X:<3A><10><>UMr<06><15><03><18><03>x<>x<>UMx<4D>UM<05>!F<>UMr<4D>UM<55>!<21><01>#J<03>%<25><02>(\<01>*<06>-<2D><04>04<00>1h<31>1h<31>UMt<4D>UM<02>3<EFBFBD><33>UMr<4D>UM<55>4|<04>8<EFBFBD><04><m<01>>g<02>A'<01>B<EFBFBD><03>EZ<05>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>UM<55><10><>Sz<05><14><>p<03><03><1B><02>V<00><1F><06>%<06>*<01>+{<01>- <07>2i<02>4<EFBFBD><03>8$<24>8$<24>Szt<7A>Sz<03>;<3B><>Szr<7A>Sz<53><(<02>?<02>?<02>Szt<7A>Sz<04>C5<43>Szr<7A>Sz<53>C<EFBFBD><01>E<EFBFBD><01>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>Sz<53><10><>Q<EFBFBD><0E>1<03><1C><03> \<04>#<23><01>%><01>'<<04>*<2A><06>/<2F><08>5<EFBFBD><08>:<3A><02>=?<02>?<3F><05>D2<02>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>Q<EFBFBD><51><10><>O<EFBFBD><05><14><02><02>_<08><03>!<21><04>%<01>&V<01>(.<03>+<2B><05>/<11>O<EFBFBD><4F><10><>L<EFBFBD><04><02><16><03>C<02>4<03><1F><><1F><>L<EFBFBD>t<EFBFBD>L<EFBFBD><03>#<08>L<EFBFBD>r<EFBFBD>L<EFBFBD><4C>#|<01>%q<06>*R<03>-<2D><03>0<EFBFBD><02>2<EFBFBD><06>7<EFBFBD><37>8 <03>;<01><m<00>=<3D><05>A<EFBFBD><05>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C><10><>K&<02><12><05><01><18><02>&<01><1C><04>f<><1F><02>"S<01>#<23><04>'<27>
<EFBFBD>.<2E><00>/<2F><05>3<EFBFBD><04>7<EFBFBD><05>;<3B><>;<3B><>K&t<>K&<00><s<>K&r<>K&<26><<3C><02>><3E><>><3E><>K&t<>K&<03>BY<42>K&r<>K&<26>B<EFBFBD><01>D<EFBFBD><01>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>K&<26><10><>IS<06><14><>IS<49> <09><>Ft<07><11><><11><>Fx<>F<05>Q<>Ft<>F<16>(<28>(<28>Fx<>F<05><1B><>Ft<>F<16><1C><><1C><>Fx<>F <09>#<23><>Ft<>F<16>$<24><>$<24><>Fx<>F<05>)^<5E>Ft<>F<00>*;<3B>F<16><10><>C)r<07>x<03><19><04>V<08>"<22><08>(`<02>*<2A><03>-<2D><>-<2D><>C)x<>C)<05>2h<32>C)r<>C)<29>2<EFBFBD><04>6<EFBFBD><03>9<EFBFBD><39>9<EFBFBD><39>C)x<>C)<05>><3E><>C)r<>C)<29>?J<02>B<05>E<EFBFBD><03>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>C)<29><10><>A_ <09><16><03><19><08>N<01> <20><> <20><>A_x<5F>A_<05>%]<5D>A_r<5F>A_<41>%<25><07>*y<01>+<2B><>+<2B><>A_x<5F>A_ <09>3U<33>A_r<5F>A_<00>4 <09>4g<07>9<EFBFBD><01>;D<>;D<>A_t<5F>A_ <0C>F/<2F>A_r<5F>A_<00>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>A_<41><10><>?<3F> <09>
<04><19><><19><>?<3F>t<EFBFBD>?<3F><02>q<>?<3F>r<EFBFBD>?<3F><><1C><02>R<>R<>?<3F>t<EFBFBD>?<3F> <0B>)f<>?<3F>r<EFBFBD>?<3F><00>)<29><>?<3F><><10><><<3C><01><11><01>?<05><17><05><1B><02><03> <20><03>#<23><00>$<24><05>(<28><03>+<2B><00>,<2C>
<EFBFBD>3s<EFBFBD>3s<EFBFBD><<3C>t<EFBFBD><<3C><06>9T<39><<3C>r<EFBFBD><<3C><>9<EFBFBD><05>><3E><02>A<01>B<EFBFBD><03>F<EFBFBD><01>H<01>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A><<3C><><10><>:<3A><07><06><1A><06>W <09>%<25><03>(<28><04>,M<07>1<EFBFBD> <09>8Q<01>9<EFBFBD><04><<3C><>:<3A><> <09><>7<EFBFBD>t<08>Z<>Z<>7<EFBFBD>x<EFBFBD>7<EFBFBD><05>(<28>7<EFBFBD>t<EFBFBD>7<EFBFBD><37><17><><17><>7<EFBFBD>x<EFBFBD>7<EFBFBD><05><1C><>7<EFBFBD>t<EFBFBD>7<EFBFBD><37>`<60>`<60>7<EFBFBD>x<EFBFBD>7<EFBFBD> <09>$<24><>7<EFBFBD>t<EFBFBD>7<EFBFBD><37>%<25><>%<25><>7<EFBFBD>x<EFBFBD>7<EFBFBD><05>*5<>7<EFBFBD>t<EFBFBD>7<EFBFBD><00>+<12>7<EFBFBD><37><10><>4<EFBFBD>r<07>h<03><19><05><1D><08>#`<06>(E<>(E<>4<EFBFBD>x<EFBFBD>4<EFBFBD><05>,<2C><>4<EFBFBD>r<EFBFBD>4<EFBFBD><34>-P<>-<2D><04>1O<01>2<EFBFBD><32>2<EFBFBD><32>4<EFBFBD>x<EFBFBD>4<EFBFBD><05>7<EFBFBD><37>4<EFBFBD>r<EFBFBD>4<EFBFBD><00>8<EFBFBD><05><<3C><02>?<04>B<EFBFBD><03>E<EFBFBD><45>E<EFBFBD><45>4<EFBFBD>x<EFBFBD>4<EFBFBD><05>Ji<4A>4<EFBFBD>r<EFBFBD>4<EFBFBD><34>J<EFBFBD><4A>J<EFBFBD><4A>4<EFBFBD><34><10><>2<EFBFBD><07>[<01><16><><16><>2<EFBFBD>x<EFBFBD>2<EFBFBD> <09>D<>2<EFBFBD>r<EFBFBD>2<EFBFBD><00><05>n<07>$<24><01>&e<>&e<>2<EFBFBD>t<EFBFBD>2<EFBFBD>
<EFBFBD>2'<27>2<EFBFBD>r<EFBFBD>2<EFBFBD><00>2<EFBFBD><04>6<EFBFBD> <09>=e<04>@U<>@U<>2<EFBFBD>t<EFBFBD>2<EFBFBD> <0B>Ji<4A>2<EFBFBD>r<EFBFBD>2<EFBFBD><32>J<EFBFBD><4A>J<EFBFBD><4A>2<EFBFBD><32><10><>1<02><1A><1A>1t<>1<03>v<>1r<>1<00><16><>1<05> <09><>-<2D>t <0B><14><><14><>-<2D>x<EFBFBD>-<2D><05><19><>-<2D>t<EFBFBD>-<2D><><1A><><1A><>-<2D>x<EFBFBD>-<2D> <0C>$<11>-<2D>t<EFBFBD>-<2D><00>$<24><>-<2D><><10><>*<2A>r<05><15><01><17><02>E<07> 9
<EFBFBD>'<27><02>+<05>0<07>65<01>8<EFBFBD><38>8<EFBFBD><38>*<2A>x<EFBFBD>*<2A><05>=<3D><>*<2A>r<EFBFBD>*<2A><>><3E><02>A<EFBFBD><02>D<EFBFBD><02>G<EFBFBD><04>J<EFBFBD><4A>K<19>K<19>*<2A><><10><>)x <0C><1E>)r<>)<08><1A><04><1E><03>!T<02>#<23><07>(<28><05>-@<02>/<2F><05>3<EFBFBD><04>6<EFBFBD><01>7<EFBFBD><01>9G<08>?A<03>A<EFBFBD><02>D-<05>H{<02>J<EFBFBD><4A>J<EFBFBD><4A>)<08><10><>'><06><15><02>1
<EFBFBD><02> <20><03>#<23> <09>*<2A><>+<07>0n<01>1<EFBFBD><31>1<EFBFBD><31>'>t<>'><03>5L<35>'>r<>'><00>5<EFBFBD><04>9<EFBFBD><01>; <09>A<EFBFBD><02>C<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>'><3E><10><>%k<07>[<5B>%k<><10><>"<22><02>3<07><18><02>.<00>Q<06>!<21><06>&]<5D>&]<5D>"<22>t<EFBFBD>"<22>
<EFBFBD>/<2F><>"<22>r<EFBFBD>"<22><>0<04>3<EFBFBD><02>6&<06>:<3A><05>?5<04>B<EFBFBD><07>H<EFBFBD><02>J<EFBFBD><4A>K<19>K<19>"<22><><10><> <20><02>9<00>a<07><19><05>c<01> <02>"k<04>%<25><>%<25><> <20>t<EFBFBD> <20>
<EFBFBD>.<2E><> <20>r<EFBFBD> <20><>/m<05>3k<02>5<EFBFBD><01>7<EFBFBD><02>9<EFBFBD><03><<3C><02>?l<08>D<05>H9<02>J<EFBFBD><4A>J<EFBFBD><4A> <20><><10><><1E><04><14><03>}<02><19><03><01>K<01><1E><03>!<21><00>"<22><04>%<25><03>(<28><01>)<29><02>,&<06>1<EFBFBD><03>4<EFBFBD><05>9,<04><E<><E<><1E>t<EFBFBD><1E>
<EFBFBD>E<EFBFBD><EFBFBD><1E>r<EFBFBD><1E><>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A><1E><><10><><03>0<02>a<03><17><04>5<01><1C> <0B>$.<07>*<03>,<2C><01>.<2E>
<EFBFBD>6<04>8<EFBFBD><38><0E> <09><><19>t <0B><14><><14><><19>x<EFBFBD><19>
<EFBFBD><1D><><19>t<EFBFBD><19><><1E><><1E><><19>x<EFBFBD><19><08>% <20><19>t<EFBFBD><19><>%<25><>%<25><><19>x<EFBFBD><19><05>*f<><19>t<EFBFBD><19><00>+C<><19><><10><><16>r<06><15><02><17><04><1B><01> <02>f<08>%<03>%<03><16>x<EFBFBD><16><08>+<2B><><16>r<EFBFBD><16><>,<01>-<2D><>-<2D><><16>x<EFBFBD><16>
<EFBFBD>6z<EFBFBD><16>r<EFBFBD><16><00>7><04>;0<02>=<3D><01>?y<01>AQ<03>D<EFBFBD><05>I+<01>J<EFBFBD><4A>J<EFBFBD><4A><16><><10><><02><12><03>V<01><17><00><18><07><1D><04> c<> <20><06>%<25><>%<25><>t<><02>(J<>r<><1A>(<28><02>*<2A> <09>0<EFBFBD><01>1<EFBFBD><06>6N<03>9<EFBFBD><05>=<3D><>>A<01>?<3F><01>@<40> <09>G<03>J<EFBFBD><4A>J<EFBFBD><4A><1A><10><>G <0B><17><05><02>K <09>$<24><08>*O<01>+<2B><03>/^<04>3<02>5@<08>;
<EFBFBD>A'<27>G<><13><><10>t<05><18><><10>r<EFBFBD><10><><1D><05>"k<01>$<02>&K
<EFBFBD>-0<01>.<2E><05>2<EFBFBD><32>2<EFBFBD><01>4b<02>6<EFBFBD><07>;<3B><05>@<40><06>E(<28>E(<28><10>t<EFBFBD><10><02>G<EFBFBD><47><10>r<EFBFBD><10><00>Ho<02>J<EFBFBD><4A>J<EFBFBD><4A><10><><1D><><0E><02> Z<05>$<24><01>&<26><05>+<2B><06>0t<02>3<06>7<EFBFBD><37>7<EFBFBD><37><0E>t<EFBFBD><0E>
<EFBFBD>A5<EFBFBD><0E>r<EFBFBD><0E><>A<EFBFBD><03>E^<04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A><0E><><1D><>
<07>"<22><>"<22><>
t<>
<08>*K<>
r<>
<03>*<2A><05>/}<07>4<04>
<03><13><>
\t<03><<3C>
\r<>
\<5C><1D><05>"Y<01>#<23><05>'<27><04>*2<>*2<>
\t<>
\<06>0<EFBFBD><30>0<EFBFBD><30>
\r<>
\<05>4<EFBFBD><34>
\t<>
\<5C>5r <0C>@]<5D>
\r<>
\<00>@<40><>
\ <
<EFBFBD>q?<3F>`<60><06>9CREATIONDATEDatewhenthefile'scontentswerecreated,asastring.Thecreationdatedoesnotchangewhenafileiscopiedorrenamed,onlywhenitischanged.WRITEDATEDatewhenthefilewaswrittentoitscurrentplaceofstorage.READDATEDatewhenthefilewaslastread.ICREATIONDATE,IWRITEDATE,IREADDATEThecreation,writeandreaddatesasintegers,suchasfromthefunctionIDATE.TYPETypeofthecontents:TEXTforfilesthatcontainonly``text''(generallymeaning7-bitascii),BINARYforallothers.NILmeansunknown.AUTHORNameoftheuserwhocreatedthefile(astring).Thefollowing``generic''attributesaregenerallyhandledbythegenericsideofGETFILEINFOifthedevice'sGETFILEINFOmethodreturnsNIL:EOLTheendoflineconventionofthestream(CR,CRLForLF).BUFFERSThenumberofpagemapbuffersforusebythestream(seedescriptionofMAXBUFFERSfieldofpagemappedstreams).ENDOFSTREAMOPActiontotakeonanyattempttoreadbeyondtheendoffile.Thisisafunctionofoneargument,thestream.Thefunctioncancauseanerror,orreturnavalue,whichisinterpretedasavaluetoreturnfromBIN.ThedefaultENDOFSTREAMOPcausesanENDOFFILEerror.ACCESSAnatomdescribingtheaccessmodeofthestream(INPUT,OUTPUT,etc).Thisissogenericthatitishandledbeforethedevice'smethodeverseesit.BYTESIZE,OPENBYTESIZEThesizeofbytestransmittedonthestream.Always8thesedays.(SETFILEINFONAME/STREAMATTRIBUTEVALUEDEVICE)SetsthevalueofthespecifiedATTRIBUTEofNAME/STREAMtobeVALUE.ReturnsTifsuccessful,NILifunsuccessful,orforattributesitdoesn'tknowabout.ItisnotgenerallyrequiredthatSETFILEINFOrecognizeanyattributesatallNILLisaperfectlygoodfillerforthisslot.MostdevicesrecognizenomorethanTYPEandCREATIONDATE(ICREATIONDATE),andeventhosearenotveryimportant,asmostapplicationssetthoseattributesinthePARAMETERSargumenttoOPENFILEwhencreatingafile.ATTRIBUTE=LENGTHimpliesactuallytruncating(orlengthening)thefile;however,theSETFILEINFOneednothandlethisitselfifitreturnsNIL,thenthegenericfilesystemwillattempttousetheSETEOFPTRmethodinstead.Thefollowingoperationsareonlyrequiredofrandomaccessstreams.Theydefaulttothefunction\IS.NOT.RANDACCESSP,whichcausesa``Streamisnotrandaccessp''errorwhencalled.(GETFILEPTRSTREAM)Returnsthecurrentfilepointer(byteposition)inSTREAM.Thefilepointeriszerowhenthestreamisopened(exceptforACCESS=APPEND),andisincrementedbyoneforeachbyteread.<00>@<40><>
\<5C>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<EFBFBD><EFBFBD>hsp<00>Jj<4A>hs<68><13><>bt <0B><1D><>br<>b<01>"<22><03>&i<03>*i<02>-<05>0<EFBFBD><07>6Y<03>9<EFBFBD><07>?`<01>AZ<00>B<EFBFBD><06>GG<47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>b<01><1D><>`. <0B>%c<03>(m<02>*<2A><05>/<<03>2<EFBFBD><00>3<EFBFBD><03>6<01>7Z<05>;<3B><01>=A<07>C"<03>F<03>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E><1D><>^d<01>
<07>$M<>^d<><13><>[<5B>t<08>o<>[<5B>r<EFBFBD>[<5B><><1D><03> <20><03>$<24><02>&<26><03>(<28><02>+i<06>/<2F><01>1k<02>3<06>7<EFBFBD><04>;<01><<3C><07>A&<26>[<5B><><13><>Yt<07><1A><>Yr<>Y<1F><1D><03> <20><03>$<24><02>&<26><03>(<28><02>+i<03>-<2D><04>0<EFBFBD><30>Y<1F><13><>Vxt <0C><1E><>Vxr<78>Vx<00>{<7B>{<7B>Vxt<78>Vx <09>'<27><>Vxr<78>Vx<00>(<28><>(<28><>Vxt<78>Vx<08>0 <20>Vxr<78>Vx<56>0&<26>Vx<56><13><>T^<5E><1D><02> <20><08>&T<04>)<29><02>,<2C><03>/<2F><04>3`<01>5<08>:<3A><03>=<3D><01>?<3F><03>C<02>Ez<07>J<EFBFBD><4A>J<EFBFBD><4A>T^<5E><1D><>R<EFBFBD>t<04>!<21><>R<EFBFBD>r<EFBFBD>R<EFBFBD><00>"\<5C>R<EFBFBD><52><13><>O<EFBFBD>t<03><<3C>O<EFBFBD>r<EFBFBD>O<EFBFBD><4F><1D><03>!s<01>#L<02>%<25><08>+<2B><>+<2B><>O<EFBFBD>t<EFBFBD>O<EFBFBD><03>/,<2C>O<EFBFBD>r<EFBFBD>O<EFBFBD><4F>/<2F><02>2/<04>5;<03>8)<06>=$<03>@\<07>D<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>O<EFBFBD><4F><1D><>N<06>#5<04>&L<06>)<29><>)<29><>Nt<>N<05>/<06>Nr<>N<1A>/^<02>1m<02>3.<06>7x<37>7<EFBFBD><37>7<EFBFBD><37>Nt<>N<02>:U<>Nr<>N<1A>:<3A><04>><3E><07>D<EFBFBD><44>N<1A><13><>Kst<05><18><>Ksr<73>Ks<4B><1D><03>!<21><01>#D<02>%u<03>(@<02>+<06>/<2F><02>1<EFBFBD><03>4<01>5<EFBFBD><07>9<EFBFBD><39>Ks<4B><10><>H<EFBFBD><02>U<08>N
<EFBFBD>a <09>%^<02>'<27><08>-p<06>2<EFBFBD><01>4<EFBFBD><02>6<EFBFBD><06>;<3B><03>>S<01>?<3F><>?<3F><>H<EFBFBD>t<EFBFBD>H<EFBFBD>
<EFBFBD>I6<EFBFBD>H<EFBFBD>r<EFBFBD>H<EFBFBD><EFBFBD>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>H<EFBFBD><48><10><>F<EFBFBD><02><12><07><17><><17><>F<EFBFBD>t<EFBFBD>F<EFBFBD>
<EFBFBD> <20><>F<EFBFBD>r<EFBFBD>F<EFBFBD><46>!G<05>&!<06>*<2A><>*<2A><>F<EFBFBD>t<EFBFBD>F<EFBFBD><02>-)<29>F<EFBFBD>r<EFBFBD>F<EFBFBD><00>-<2D><>F<EFBFBD><46><13><>D t<02>e<>D r<>D <0C><1D><02> u<02>"<22><01>$<24><03>' <09>-<2D><01>/x<02>1<EFBFBD><05>5<EFBFBD><00>6c<36>D t<>D <01>8<11>D r<>D <00>8<EFBFBD><38>8<EFBFBD><38>D t<>D <03><<1D>D r<>D <0C><u<01>> <0B>> <0B>D t<>D <01>?<3F><>D r<>D <01>@<40><>D <0C><13><>Aet<06><19><>Aer<65>Ae<41><1D><02> <20><05>%<25><01>'<27><06>-`<06>2<02>4N<02>6<EFBFBD><01>8<EFBFBD><02>;<05>?<3F><03>BZ
<EFBFBD>I7<01>J<EFBFBD><4A>J<EFBFBD><4A>Ae<41><1D><>?<3F>t <09>&2<>?<3F>r<EFBFBD>?<3F><>&<26><04>)<29><01>+ <09>2<EFBFBD><08>85<38>?<3F><><13><><<3C>t <0C><1E><><<3C>r<EFBFBD><<3C><>"<22><05>'<01>(<28><03>+<2B><01>-y<02>/<2F><06>4<EFBFBD><01>6<EFBFBD><03>9<05>>K<02>@<40><02>C+<01>D<EFBFBD><04>Gm<47>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A><<3C><><1D><>;<01><00> #<07>%y<01>'<02>)<29><08>/<2F><02>2<<06>6<EFBFBD><36>7I<02>:<07>?U<02>A<EFBFBD><04>EU<01>G&<05>J<EFBFBD><4A>J<EFBFBD><4A>;<18><1D><>9N<01><05>#<23><00>$<24><05>(<28><04>,<2C><01>-<2D>
<EFBFBD>4<EFBFBD><01>6<EFBFBD><00>7<EFBFBD><04>;D<01><<3C><05>@<40><03>DR<44>DR<44>9Nt<4E>9N<02>F<EFBFBD><46>9Nr<4E>9N<00>G<EFBFBD><47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>9N<39><1D><>7{<06>"C<>"C<>7{t<>7{ <0C>-.<2E>7{r<>7{<7B>-<2D><05>1<EFBFBD><01>3S<33>3S<33>7{t<>7{<02>6<EFBFBD><01>94<03><<3C><>7{r<>7{<7B><<3C><05>@<40><>@<40><>@<40><>7{<7B><13><>4<EFBFBD>t<05><18><>4<EFBFBD>r<EFBFBD>4<EFBFBD><34><1D><01> <03>#<23> <09>*
<02>,a<05>0b<03>4+<01>5<EFBFBD><02>8-<05><<3C><00>=
<EFBFBD>4<EFBFBD>t<EFBFBD>4<EFBFBD><04>A=<3D>4<EFBFBD>r<EFBFBD>4<EFBFBD><00>B<10>B<10>4<EFBFBD>t<EFBFBD>4<EFBFBD><05>G<1A>4<EFBFBD>r<EFBFBD>4<EFBFBD><00>G<EFBFBD><04>J<EFBFBD><4A>K<1A>K<1A>4<EFBFBD><34><1D><>3<03> <20><01>!<21><01>#<23><06>("<03>*<2A><01>+<2B><01>-'<06>2C<05>6b<02>8<EFBFBD><07>=<3D><05>B]<03>E3<03>G<EFBFBD><02>I
<EFBFBD>3<01><13><>0ct<08>F <0B>&Z<>0cr<63>0c<30>'<27><02>*<2A><03>-<2D><01>/g<04>3!
<EFBFBD>:<3A><01><<3C><02>?4<06>D!<21>D<EFBFBD><05>Ie<00>Jm<4A>Jm<4A>0c<30><1D><>.<2E><04>!&<04>$"<22>.<2E><> <09><>+St <0B><14><><14><>+Sx<53>+S
<EFBFBD><1D><>+St<53>+S<><1E><><1E><>+Sx<53>+S<08>% <20>+St<53>+S<>%<25><>%<25><>+Sx<53>+S<04>)<29><>+St<53>+S<>*<2A><>*<2A><>+Sx<53>+S<05>/1<>+St<53>+S<00>0<0E>+S<><10><>(fr<03>S<02><15><04><01><1A><02><1C><08>"<22><>"<22><>(fx<66>(f<08>)<17>(fr<66>(f<>){<01>+<12>+<12>(fx<66>(f
<EFBFBD>3<EFBFBD><EFBFBD>(fr<66>(f<>4J<01>5<EFBFBD><01>7<EFBFBD><37>7<EFBFBD><37>(fx<66>(f<04>;<3B><>(fr<66>(f<00><T<><<3C><06>A<EFBFBD><41>A<EFBFBD><41>(ft<66>(f<00>B<EFBFBD><42>(fr<66>(f<>C<01>DF
<EFBFBD>Jj<EFBFBD>(ft<66>(f<>KA<4B>KA<4B>(f<><10><>&<26><02><16>&<26>r<EFBFBD>&<26><>n<01><14> <0C><1C><01>?<02> N <09>&0<01>'X<06>+<2B><03>/t<05>3*<2A>&<26><><10><>#<23><01><11><01>!<02>k<08>$<07> <20><03>#)<29>#)<29>#<23>t<EFBFBD>#<23>
<EFBFBD>,f<>#<23>r<EFBFBD>#<23><>,<2C><08>2<EFBFBD><02>5) <09>;<01><~<03>?G<>#<23>t<EFBFBD>#<23><03>B<EFBFBD><42>#<23>r<EFBFBD>#<23><>B<EFBFBD><01>DA<00>EB<08>J<EFBFBD><4A>J<EFBFBD><4A>#<23><><10><>!<21><03>7<05><17><02>0<03><04> (<28> <20><03>$<24><06>)<29><08>/<2F><01>2+<03>5<EFBFBD><03>9O<39>9O<39>!<21>t<EFBFBD>!<21><03><<3C><>!<21>r<EFBFBD>!<21><>=h<02>@U<>@U<>!<21>t<EFBFBD>!<21> <0B>Ji<4A>!<21>r<EFBFBD>!<21><>J<EFBFBD><4A>J<EFBFBD><4A>!<21><><10><> <00>
<EFBFBD> t<> <0C><1B><> r<> <01><1D><02> <20><03>$<04>'<27><02>*<2A><02>-E<03>0<EFBFBD> <09>7<EFBFBD><01>9<EFBFBD><03>=! <0B>D<EFBFBD><02>GS<04>J<EFBFBD><4A>J<EFBFBD><4A> <00><10><>- <09>s<01><17><02>$<24>$<24>-x<>- <09>"<00>-r<>-<2D>"X<07>(Q<01>)<29><>)<29><>-t<>-<07>0<EFBFBD><30>-r<>-<2D>0<EFBFBD><03>4g<07>9m<00>:j<04><<3C><>-<2D><10><>@x<08>(<28>@r<>@<40><00>C<>C<>@t<>@<05>M<>@r<>@<40> +<06>%F<07>*<2A> <09>1<EFBFBD><02>4& <0B><p<02>?'<04>B`<07>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>@<40><10><>mt
<EFBFBD><19><>mr<6D>m<>c<03><1D><02> Q<05>$<24><03>'<27><08>-7<01>.<2E><06>3]<5D>3]<5D>mt<6D>m<02>5<EFBFBD><35>mr<6D>m<00>6<EFBFBD><03>:<02><q<06>AF<03>C<EFBFBD><05>HF<03>J<EFBFBD><4A>J<EFBFBD><4A>m<><10><><17><06>l<01><16><02>3<02>d<>d<><17>t<EFBFBD><17><08>"<22><><17>r<EFBFBD><17><>#K<05>(%<07>,<2C><><17><> <09><> <02>
<08>c <09>P<02><1C><03> H<07>&<01>(<05>-}<05>1<EFBFBD><07>7^<5E>8*<03>;<3B><06>@<40><01>B<EFBFBD><02>Ez<07>J<EFBFBD><4A>J<EFBFBD><4A> <20> <09><>Vt<12><19><>Vr<56>V<00><1A><04>v<05>"<22><00>#}<07>(<28><01>)<29><02>,4 <0C>4=<04>7<EFBFBD><03>;<06>><3E><>V<> <09><>t
<EFBFBD><08><08>x<><05><18><>t<><00><19><><10><10><> #r<06><15><02>L<06>'<03><1F><06>$z<04>(<08>-<2D><01>/<2F><>/<2F><> #x<> #<05>4m<34> #r<> #<00>5^<5E>5<EFBFBD><02>8<EFBFBD><03>;]<06>@5<01>A<EFBFBD><03>D<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A> #<23><10><>
Y<05><14><01><05><1A><06>W<02>!f<>!f<>
Yx<EFBFBD>
Y<05>%<25><>
Yr<EFBFBD>
Y<EFBFBD>&><00>'<27><>'<27><>
Yt<EFBFBD>
Y<05>-<00>
Yr<EFBFBD>
Y<01>.)<02>0<EFBFBD><01>1<EFBFBD>
<EFBFBD>9<EFBFBD><01>;n<02>=<3D><02>?<3F><03>B<EFBFBD><03>E<EFBFBD><04>H<EFBFBD><48>
Y<08>
<EFBFBD>q?<3F>`<60>710Althoughthisoperationisonlyabsolutelyrequiredforrandomaccessstreams,itisdesirabletosupplyitforotherstreamswherepossible.Forexample,whenreadingafilesequentiallythroughPupFtp,thestreamcancountthebytesastheygobyandthusgiveanaccuratevalueforGETFILEPTR.Ifastreamhasnoideaatallofposition,itcanmakeitsGETFILEPTRbethefunctionZEROandtherebyatleastavoidbreaksfromcodethatcallsGETFILEPTRcarelessly.(GETEOFPTRSTREAM)ReturnsthefilepointeroftheendofSTREAM,i.e.,thefilepointerthatGETFILEPTRwouldreturnafterthelastbyteofSTREAMisread.SameastheLENGTHattributeforastreamthatrepresentsafile.Ofcourse,non-randomaccessstreamsmayhavenoideawheretheendis,andcausinganon-randaccessperrorisperfectlyacceptable.(SETFILEPTRSTREAMBYTENUMBER)SetsthefilepointerofSTREAMtobeBYTENUMBER.ThespecialvalueBYTENUMBER=<3D>1meanstheendofthestream;othernegativevaluesareillegal.SETFILEPTRbeyondtheendofthestreamispermissible,butithasnoimmediateeffectbeyondchangingthelogicalfilepointer.AttemptingtothenBINcausesanEOFerror.AttemptingtoBOUT(forafileopenforwrite)shouldextendthefile,sothatitseofisimmediatelybeyondthenewlyBOUTedbyte.AswithGETFILEPTR,thereisnorequirementthatthisworkonnon-randomaccessstreams,anditmaybecompletelyimpossibleonsomeofthem.However,forthosenon-randomaccessstreamsthatperformGETFILEPTR,itispossibletofakeSETFILEPTRforvalueslargerthanthecurrentfilepointerbyskippingsomenumberofbytesinthefile,e.g.,byperforming(RPTQ(DIFFERENCEBYTENUMBER(GETFILEPTRSTREAM))(BINSTREAM)).TherearesomeapplicationsforwhichforwardSETFILEPTRisalltherandomaccessthatisactuallyrequired,soitisnicetobeabletoaccommodatesuchapplications.(BACKFILEPTRSTREAM)BacksupthefilepointerinSTREAMbyonebyte.Functionallythesameas(SETFILEPTRSTREAM(SUB1(GETFILEPTRSTREAM)),butmaybepossibleonnon-randomaccessstreamsbymaintainingaone-characterbuffer,whichisallthebackingupthisoperationisformallyrequiredtoperform.IbelievethemainuseforthisisinREAD,whichneedstobackupthestreamonecharacterwhen,forexample,itreadsabreakcharacterterminatinganatom.(SETEOFPTRSTREAMLENGTH)ChangesthelengthofSTREAMtobeLENGTH,i.e.,``sets''itsendoffilepointer.Thismayrequirelengtheningortruncatingthefile.Usedbythefunction\SETEOFPTRandbySETFILEINFOforattributeLENGTHwhenthedevice'sSETFILEINFOmethoddoesn'thandleit.Thefollowingthreefieldsareplaceholdersforpossiblefutureextensions.Thesefieldsarenotcurrentlyusedatall:(LASTCSTREAM)ReturnsthelastcharacterreadfromSTREAM,i.e.,thelastbytethatwasBINed,asacharacter.LASTCiscurrentlyimplementedviaBACKFILEPTR.<00>H<EFBFBD><48>
Y<EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68><10><>br<07><16><03>R<08>z<01> <20><03>$ <09>*<2A><07>0<02>2W<05>7y<05>;<3B><07>@<40><01>B2<01>C<EFBFBD><08>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`7<05><14><01><02>3<04><1B><06> <20><04>$|<08>)<29><>*W<02>,<2C><07>2<EFBFBD><03>6%<06>:<3A><00><<03>>L <0B>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>`7<><10><>^m<06><02><18><05>L<02>
<04>$<02>&<26><04>*i<01>,K<03>/<2F><01>1<EFBFBD><01>3<EFBFBD><02>6<EFBFBD><03>:<03>= <01>?D<07>D<EFBFBD><04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>^m<><10><>\<5C>t <09><18><>\<5C>r<EFBFBD>\<5C><00><19><>i<01><1B><00>&<05>!<21><02>$<01>&'<03>)&<01>*<2A><02>,<2C><01>.~<08>4<01>5w<02>8 <03>;<3B><02>=<3D><>=<3D><>\<5C>t<EFBFBD>\<5C> <09>F <0B>\<5C>r<EFBFBD>\<5C><>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><><10><>Z<EFBFBD><07><15><><15><>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><03>4<>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A><19><02><06> <20><01>"P<04>%F<04>(<28><05>,<2C><03>07<03>3N<03>5<EFBFBD><04>8<EFBFBD><38>8<EFBFBD><38>Z<EFBFBD>t<EFBFBD>Z<EFBFBD> <09>A2<41>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>A<EFBFBD>
<EFBFBD>Gp<EFBFBD>Z<EFBFBD><EFBFBD> <09><>W<EFBFBD>t <09>1<>1<>W<EFBFBD>x<EFBFBD>W<EFBFBD><05><17><>W<EFBFBD>t<EFBFBD>W<EFBFBD><00><18><>W<EFBFBD><57><10><>T<EFBFBD>r<06><15><02><17><03><06><1E><01> .<02>"`<02>$<24><01>&w<>&w<>T<EFBFBD>x<EFBFBD>T<EFBFBD><05>+E<>T<EFBFBD>r<EFBFBD>T<EFBFBD><00>+<2B><04>.^<02>0<EFBFBD><03>2<EFBFBD><06>7e<03>:<05>:<05>T<EFBFBD>t<EFBFBD>T<EFBFBD> <09>Bk<42>T<EFBFBD>r<EFBFBD>T<EFBFBD><54>B<EFBFBD><04>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>T<EFBFBD><54><10><>R<EFBFBD><04><13><02><15><03>I<03>8<01><1C><><1C><>R<EFBFBD>x<EFBFBD>R<EFBFBD><05>!<21><>R<EFBFBD>r<EFBFBD>R<EFBFBD><52>"<01>#Q<04>&<26><>'<03>*<2A><01>,5<02>.t<>.t<>R<EFBFBD>t<EFBFBD>R<EFBFBD><05>3~<7E>R<EFBFBD>r<EFBFBD>R<EFBFBD><52>3<EFBFBD><08>9P<02>;m<00><x<05>@<40><03>Cs <09>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>R<EFBFBD><52><10><>P<EFBFBD><04>\<5C><13><01> <06><1A> <09>"<22><05>&<26><06>+<2B><02>.<2E><03>2<01>4)<03>7,<04>;N<02>=<3D><02>@{<02>BJ<02>E <06>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>P<EFBFBD><50><10><>O-<0E><1A><04><1D><01>*<08>$<24>
<EFBFBD>+*<2A>O-<2D> <09><>K<EFBFBD>t
<EFBFBD><08><08>K<EFBFBD>x<EFBFBD>K<EFBFBD><05><18><>K<EFBFBD>t<EFBFBD>K<EFBFBD><4B><19><><19><>K<EFBFBD>x<EFBFBD>K<EFBFBD> <09>!<21><>K<EFBFBD>t<EFBFBD>K<EFBFBD><00>"<22><>K<EFBFBD><4B><10><>Ir<03>V<02><15><03><17><06><1C><01>#<23>#<23>Ix<>I<05>"<22><>Ir<>I<03>#X<01>$<24><01>&<26><>&<26><>Ix<>I <09>.<2E><>Ir<>I<00>/<2F><>/<2F><02>2<EFBFBD><06>7<04>:<3A><>:<3A><>Ix<>I <09>B<EFBFBD><42>Ir<>I<03>C<00>D<EFBFBD><01>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>I<03><10><>G9<02><12><02>K<01><16><02><06><1D><04>!0<07>&m<05>*k<02>,<2C><07>0p<30>G9<47><10><>DUt <09><18><>DUr<55>DU<44>^<05>&<26>&<26>DU<44>DU<02> f<02>"<22><01>$<24><02>&<26><05>*<2A><>DU<44>DU<44>+)<01>,w <0B>3<EFBFBD><02>6H<01>7<02>9<EFBFBD><01>;<3B><08>B]<05>F<05>J<EFBFBD><4A>J<EFBFBD><4A>DU<44><10><>B<EFBFBD><07>p<02><18><06>1<03><1F><07>$<24><>%O <09>,<2C><01>.M<03>1x<31>1x<31>B<EFBFBD>t<EFBFBD>B<EFBFBD><02>3<EFBFBD><33>B<EFBFBD>r<EFBFBD>B<EFBFBD><42>4<EFBFBD><05>8<EFBFBD><01>:<3A><>:<3A><>B<EFBFBD>t<EFBFBD>B<EFBFBD><02>=E<>B<EFBFBD>r<EFBFBD>B<EFBFBD><42>=<3D><05>A<EFBFBD><41>B, <09>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>B<EFBFBD><42><10><>@<40>t<03><13><>@<40>r<EFBFBD>@<40><>g<03><00>2<03><1A><03><1D><02> &<05>$<05>(|<05>,<2C><02>/><04>1<EFBFBD><01>3<EFBFBD><03>6m<02>8<<02>:<3A><01>;<3B>
<EFBFBD>C<EFBFBD><05>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>@<40><><10><>><3E><04>c<>c<>><3E>t<EFBFBD>><3E><03><17><>><3E>r<EFBFBD>><3E><01><19><04><1C><><12><12>><3E><>><3E><><18>><3E><><10><>;<3B><01><12><03>~<7E>~<7E>;<3B>t<EFBFBD>;<3B> <09><1D><>;<3B>r<EFBFBD>;<3B><00><1E><04>"
<01>#Z<01>%B
<EFBFBD>,<2C><03>/<2F><03>2<03>5x<01>7` <09>?<05>C <07>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>;<3B><><10><>:<01><11><02><14><01>g <09>5 <09>#<23><01>%<25><03>) <01>*<2A><04>.k<>.<2E><07>4<EFBFBD><02>6<EFBFBD><04>:a <09>B<05>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>:<1C><10><>8R<03>G<06><18><><18><>8Rt<52>8R <09> <20><>8Rr<52>8R<00>!<21><01>"<22><01>$F<07>)l<01>+<03>-<2D><>-<2D><>8Rt<52>8R <09>6U<36>8Rr<52>8R<38>6<EFBFBD><02>8<EFBFBD><05><<3C><05>@<40><03>C<EFBFBD><02>F(<06>J<EFBFBD><4A>J<EFBFBD><4A>8R<38><10><>6<03>h<06><18><01><07>!<03>%<05>*<2A><01>,<2C><04>0<EFBFBD><01>2<EFBFBD><02>5<EFBFBD><04>8<EFBFBD><04></<01>><3E> <09>F6<46>F6<46>6t<7F>6<04>K@<40>K@<40>6<36><10><>4<EFBFBD>
<EFBFBD><1A><><1A><>4<EFBFBD>x<EFBFBD>4<EFBFBD> <09>"<22><>4<EFBFBD>t<EFBFBD>4<EFBFBD><34>#<23>
<EFBFBD>-<2D><>-<2D><>4<EFBFBD>x<EFBFBD>4<EFBFBD><05>2<EFBFBD><32>4<EFBFBD>t<EFBFBD>4<EFBFBD><01>5M<03>9<EFBFBD><39>9<EFBFBD><39>4<EFBFBD>x<EFBFBD>4<EFBFBD><05>>b<>4<EFBFBD>t<EFBFBD>4<EFBFBD><01>@<10>4<EFBFBD>r<EFBFBD>4<EFBFBD><00>@<40><>A><04>E$<02>G]<03>J<EFBFBD><4A>J<EFBFBD><4A>4<EFBFBD><34><10><>2<EFBFBD> <0B><02>,<04><06>#1<>#1<>2<EFBFBD>t<EFBFBD>2<EFBFBD> <09>+<2B><>2<EFBFBD>r<EFBFBD>2<EFBFBD><32>,<01>-Y<02>/0<02>1w<05>6~<05>:r<03>='<01>>{<07>Cu<08>I+<01>J<EFBFBD><4A>J<EFBFBD><4A>2<EFBFBD><32><10><>1<01><11><01><12><03><15><01>6<01><18><03><1B><01>C
<EFBFBD>%<25><03>(<28> <0C>0<1F>1<06> <09><>-<2D>t <0B><14><><14><>-<2D>x<EFBFBD>-<2D><05><19><>-<2D>t<EFBFBD>-<2D><00><1A><>-<2D><><10><>*<2A>r<04><14><01><16><02>P<03><1B><06> <20><01>"<22><>"<22><>*<2A>x<EFBFBD>*<2A><05>'^<5E>*<2A>r<EFBFBD>*<2A><>(<01>*#<02>,<2C><04>0x<30>1 <0B>9<<02>;<3B><03>?\<01>A,<2C>A,<2C>*<2A>t<EFBFBD>*<2A>
<EFBFBD>K@<40>K@<40>*<2A><><10><>) x<05>_<>) t<>) <09>8<04>E
<EFBFBD>%\<5C>%\<5C>) x<>) <05>**<2A>) t<>) <01>+<2B><>) r<>) <00>,<2C><02>.<2E><02>1<EFBFBD><01>3~<07>8<EFBFBD><01>:j <09>B<05>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>) <09><10><>'6<01><12>
<EFBFBD>e<00><1B> <0C>$[<06>)<04>-4<01>.<2E><02>0<EFBFBD><02>3[<06>8<EFBFBD><01>:<3A><03>=<3D><08>C<EFBFBD><01>Ep<07>J<EFBFBD><4A>J<EFBFBD><4A>'6<><10><>%l<07><15><01>}<07><03>b<00>E<06>"<22><02>%<03>([<02>*<2A><02>,<2C><03>/9<01>0<01>2<06>2<06>%lt<6C>%l<03>5b<35>%lr<6C>%l<00>6<04>9<EFBFBD><04>=<3D><01>?><03>B]<01>DH<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>%l<><10><>#<23><02><08><18><04><1C><02><1E><07>$R<01>%z<04>(<28><00>)<29><04>-<2D><08>3D
<EFBFBD>:o<01><2<04>?<3F><>#<23><> <09><> \t <09>1<>1<> \x<> \<05><17><> \t<> \<5C><18><><18><> \x<> \<05><1D><> \t<> \<00><1E><> \<5C><10><>or<06><02>F<05>b<01><00><00>ox<6F>o<05>"<22><>or<6F>o<>#9<01>$<24><01>&<26><>&<26><>ox<6F>o<05>+r<>or<6F>o<00>,5<04>.<2E><07>2<EFBFBD><02>4Q<02>6<EFBFBD><01>8<EFBFBD><03>:<3A><07>?<3F><>@D<03>CA<02>F)<06>J<EFBFBD><4A>J<EFBFBD><4A>o<><10><><1B>
<EFBFBD><17><01><19> <09><1F><02>" <04>$<24><>%<03>(<28><01>*^<02>,<2C><07>1<EFBFBD><31>1<EFBFBD><31><1B>t<EFBFBD><1B> <09>:M<><1B>r<EFBFBD><1B><>:<3A><02>=?<01>?<15>?<15><1B>t<EFBFBD><1B>
<EFBFBD>HR<EFBFBD><1B>r<EFBFBD><1B><>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A><1B><><10><><19><08><15><><15><><19>t<EFBFBD><19><05><1A><><19>r<EFBFBD><19><>Q<03><1E><02>!<07>%<25><>%<25><><19>t<EFBFBD><19>
<EFBFBD>/5<><19>r<EFBFBD><19><>/<2F><05>4g<06>8<EFBFBD><05>=J<02>>w<><19><> <09><>X<02> <0C><08><12><04><15><05>x<02><1B><04><06>#<23><02>%<25><07>*<2A><05>.<2E>
<EFBFBD>5<EFBFBD><EFBFBD>6 <04>9<EFBFBD><05>=<3D><02>?<3F><02>B<08>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>X<> <09><><14><01> _<03>
G<EFBFBD><14><> <09><>Qt<05><0F><><0F><>Qx<51>Q<05><14><>Qt<51>Q<00><15><>Q<><10><>dr<06><15><02>1<03><1A><08> <20><03>#<23><03>'-<2D>'-<2D>dx<64>d<05>+<2B><>dr<64>d<00>,<2C><04>/w<02>1<EFBFBD><03>4a<03>7v<03>:I<02><<3C><><<3C><>dt<64>d<02>?<3F><>dr<64>d<02>A<EFBFBD><01>C<EFBFBD><00>D<EFBFBD> <09>J<EFBFBD><4A>K<1A>K<1A>d<><10><> <0C>t<04><14><> <0C>r<EFBFBD> <0C><><01>Z<08>
<EFBFBD>$"<02>&1<>&1<> <0C>t<EFBFBD> <0C>
<EFBFBD>/n<> <0C>r<EFBFBD> <0C><00>/<2F><> <0C> <09>
<EFBFBD>q?<3F>`<60><06>11(FREEPAGECOUNTHOST/DIRDEVICE)IntendeduseistoreturnthenumberoffreepagesonHOST/DIR.MaybefoldedintoageneralGET/SETdevice/directoryinfooperation.(MAKEDIRECTORYHOST/DIRDEVICE)IntendeduseistocreateanewdirectoryHOST/DIR.TheremainingfieldsintheFDEVareforbufferedandpage-mappedstreams,andareignoredfornon-buffereddevices.Thesefieldsaredescribedinseparatesections.StreamsThefollowingfieldsareusedbyallstreams:DEVICEPointertothisstream'sFDEV.FULLFILENAME``Full''namebywhichthisfileisknowntotheuser.Shouldbeanuppercaselitatom,fullyqualifiedsothatgivingthesamenamebacktothefilesystemshouldproducethesamefile(totheextentthatthedevicecansupportsuchuniqueness).IsNILforunnamedstreams.FULLNAMEAccessfield.IsthesameasFULLFILENAME,unlessthatisNIL,inwhichcaseitisthestreamitself.ThisavoidsthecircularitythatwouldresultiftheFULLFILENAMEfieldcontainedthestreamdatum.NAMEDPAccessfield.IsTifthestreamsisnamed,i.e.,itsFULLFILENAMEisnon-NIL.ACCESSBITSContainsanumericcodedescribingwhataccessmodethefileisopenfor:thereareread,writeandappendbits.ThisfieldisusuallyaccessedindirectlyviatheACCESSfield.However,therearemacrosforreferringtoparticulartypesofaccessusingmoreefficientbittestoperations:(OPENEDSTREAM)ACCESSisnotNIL.(READABLESTREAM)Readbitison:ACCESSisINPUTorBOTH.(READONLYSTREAM)Onlythereadbitison:ACCESSisINPUT.(APPENDABLESTREAM)Appendbitison:ACCESSisOUTPUT,BOTHorAPPEND.(APPENDONLYSTREAM)Onlytheappendbitison:ACCESSisAPPEND.(DIRTYABLESTREAM)Appendorwritebitison:ACCESSisOUTPUT,BOTHorAPPEND.Yes,thisisoperationallythesameasAPPENDABLE,giventhefourpossiblevaluesofACCESS.(OVERWRITEABLESTREAM)Writebitison:ACCESSisOUTPUTorBOTH.(WRITEABLESTREAM)Writebitison,orappendbitisonandfileisatEOF.Avoidusingthisone,it'salittlestrange.<00>/<2F><> <0C><>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<12>hsp<01>Jj<4A>hs<68> <09><>b5t
<EFBFBD><16><><16><>b5x<35>b5<07>m<>b5t<35>b5<62>D<>D<>b5x<35>b5<05>!<21><>b5t<35>b5<00>"<22><>b5<62><10><>_Hr<07>b<02><18><01>3<01><1B><05><1F><02>"S<05>'u<01>)%<03>+<2B><04>/<2F><01>1<EFBFBD><31>1<EFBFBD><31>_Hx<48>_H<07>7<EFBFBD><37>_Hr<48>_H<00>8]<5D>8<EFBFBD><02><<01>=<3D><05>B.<03>D<EFBFBD><00>F<06>J<EFBFBD><4A>J<EFBFBD><4A>_H<5F><10><>]~<06> <0F>!+<03>#<23> <09>)<29><>]~<7E> <09><>ZAt
<EFBFBD><16><><16><>ZAx<41>ZA<07>m<>ZAt<41>ZA<5A>D<>D<>ZAx<41>ZA<05>!<21><>ZAt<41>ZA<00>"<22><>ZA<5A><10><>WTr<07>=<02><18><01><19><01>B<05><00> <02>"<22><08>(q<>(q<>WTx<54>WT<07>.Q<>WTr<54>WT<00>.<2E><>WT<57> <09><>S<EFBFBD><02>
!<08><13><05><17><01><02><1C><><1C><>S<EFBFBD>t<EFBFBD>S<EFBFBD><03> <10>S<EFBFBD>r<EFBFBD>S<EFBFBD><53> <20><02>#<23><02>&)<07>,<02>/$
<EFBFBD>7<EFBFBD><07>=<3D><02>@<40><02>CV<06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>S<EFBFBD><53> <09><>R <0B><07> <0C>d<04>6<05><1E><02> <20><08>&<26><01>(X<07>-<2D><08>2t<32>R<10> <09><>M<EFBFBD>v<06><0F><>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D><0F><>M<EFBFBD><4D> <09><>I<EFBFBD><02> <0C><08>{<05><15><02>%<03>2<01><02><1E><07>#<23><>I<EFBFBD><49> <09><>Fkt<05><0E><>Fkr<6B>Fk<46>/<06><1B><01>Q<03><1F><07>$<24><>$<24><>Fkt<6B>Fk<03>(<<3C>Fkr<6B>Fk<00>(<28><>Fk<46> <09><>B<EFBFBD>t <0B><08>B<EFBFBD>r<EFBFBD>B<EFBFBD><42>/<07>q<03><01>!<04>$<24><03>'<27><03>)<29><01>+3<04>/<2F><01>1<<02>3<EFBFBD><04>6<EFBFBD><36>75<05>;<3B><01>=<3D><01>?<3F><08>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>B<EFBFBD><42>/<2F>A<04>G<08><1F><01>!<21><03>$8<05>(8<02>*w<03>-<2D><03>1r<03>4<EFBFBD><01>6$<02>8c<03>:<3A><05>?<05>C\<06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>A<1E>/<2F>?T<03><1A><03>O<02><1F><02>"<05>&Q<03>);<02>+<2B><05>0<02>2<EFBFBD><06>7<EFBFBD><03>;4 <0B>C:<3A>C<EFBFBD><01>E<EFBFBD><45>E<EFBFBD><45>?Tt<54>?T<02>H<0F>?Tr<54>?T<>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>?T<>/<2F>=<3D><06><07>!<21><>=<3D><> <09><>:t<07><10><>:r<>:<10>/<05>z<05><1E><>A<01> <20><02>"<22><03>&D<01>'<27><>'<27><>:t<>: <0B>1<EFBFBD><31>:r<>:<00>2<EFBFBD><05>6<EFBFBD><03>9I<01>:<3A><>:<3A><>:t<>:<02>=<18>:r<>:<00>=<3D><01>?_<04>CH<03>F<01>GG<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>:<10>/<2F>8=<05><1B><06>-<2D><1F><><1F><>8=s<>8=<03>"<05>%t<02>'R
<EFBFBD>,r<03>.<2E><04>1<EFBFBD><05>4<EFBFBD><01>6 <02>7<EFBFBD> <0B>Al<04>C<EFBFBD><08>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>8=<3D>/<2F>6s<05><1A><05><1D><>6sr<73>6s<36><1D><>6s<36> <09><>3t<05><0E><>3r<>3<02>/<05>o<05><1E><><01> ~<7E> ~<7E>3t<>3<00>!U<>3r<>3<02>!<21><01>"<22><02>%<06>)<29><01>+<05>/<2F><04>2(<02>3<EFBFBD><33>3<EFBFBD><33>3t<>3 <0B>=<3D><>3r<>3<02>>@<01>?~<03>B=<3D>3t<>3<02>D<EFBFBD><44>3r<>3<00>E<1F>3<02> <09><>/<2F>t <09>Z<>/<2F>r<EFBFBD>/<2F><>/<07><1C><00>"<06>#<23><03>&<26> <09>-c<03>0<EFBFBD><05>4<EFBFBD><03>8<EFBFBD><02>;
<03>=u<01>><3E><03>BX<03>E<04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><>/<2F>-<2D><04><1A><04><02> <20><05>%<25><04>(<28><>)
<03>,<04>/D<01>0<EFBFBD><06>5Q<07>:<3A> <09>@<40><02>C<02>E_<45>E_<45>-<2D>t<EFBFBD>-<2D><05>Ji<4A>-<2D>r<EFBFBD>-<2D><>J<EFBFBD><4A>J<EFBFBD><4A>-<2D><>/<2F>+<2B><05><1A><><07>! <04>$<24><02>&<26><05>+`<02>-<2D><08>3<01>4<EFBFBD> <09>:<3A><04>><<01>?<3F><05>C<EFBFBD><04>G]<03>J<EFBFBD><4A>J<EFBFBD><4A>+<2B><>/<2F>*<08>U<02>C<03> <20>
<EFBFBD>'A<>*<18>/<2F>'4t<06><1D><><1D><>'4x<34>'4<05>"<22><>'4t<34>'4<00>#<23><>'4r<34>'4<>'<27><>'<27><>'4t<34>'4<05>,<2C><>'4r<34>'4<>-<01>.X<02>0<EFBFBD><30>0<EFBFBD><30>'4t<34>'4<02>3#<23>'4r<34>'4<00>3<EFBFBD><33>'4<>/<2F>$Gt<08><1F><><1F><>$Gx<47>$G<05>$c<>$Gt<47>$G<00>%:<3A>$Gr<47>$G<>'<27><03>+(<02>-<01>.T<02>0<EFBFBD><30>0<EFBFBD><30>$Gt<47>$G<05>5<EFBFBD><35>$Gr<47>$G<>6<01>7E<37>7E<37>$Gt<47>$G<04>;x<>$Gr<47>$G<>;<3B><01>=f<>=f<>$Gt<47>$G<03>@<40><>$Gr<47>$G<00>A<1F>$G<>/<2F>!Zt<08><1F><><1F><>!Zx<5A>!Z<05>$c<>!Zt<5A>!Z<00>%:<3A>!Zr<5A>!Z<>'<27><03>*<2A><02>-+<03>0<02>2<01>3C<02>5<EFBFBD><35>5<EFBFBD><35>!Zt<5A>!Z<05>:<3A><>!Zr<5A>!Z<>:<3A><01><4<><4<>!Zt<5A>!Z<04>@g<>!Zr<5A>!Z<00>@<40><>!Z<>/<2F>mt
<EFBFBD>!C<>!C<>mx<6D>m<05>&<11>mt<6D>m<00>&<26><>mr<6D>m<>'<27><05>,<2C><02>.<2E><01>0<02>2Q<32>2Q<32>mt<6D>m<05>7[<5B>mr<6D>m<>7<EFBFBD><01>8<EFBFBD><38>8<EFBFBD><38>mt<6D>m<05>=<3D><>mr<6D>m<00>><3E><>><3E><>mt<6D>m<03>B<07>mr<6D>m<>B_<01>C<EFBFBD><43>C<EFBFBD><43>mt<6D>m<05>H<EFBFBD><48>mr<6D>m<00>I\<5C>m<>/<2F><1B>t
<EFBFBD>!C<>!C<><1B>x<EFBFBD><1B><05>&<11><1B>t<EFBFBD><1B><00>&<26><><1B>r<EFBFBD><1B><>'<27><03>*<2A><02>-+<05>1<EFBFBD><02>3<EFBFBD><01>5<02>7b<37>7b<37><1B>t<EFBFBD><1B><05><l<><1B>r<EFBFBD><1B><><<3C><01>><02>><02><1B>t<EFBFBD><1B><05>C <0C><1B>r<EFBFBD><1B><00>Ci<43><1B><>/<2F><18>t <09> l<> l<><18>x<EFBFBD><18><05>%:<3A><18>t<EFBFBD><18><00>&<11><18>r<EFBFBD><18><>'<27><05>-<01>.<2E><04>2J<02>4i<01>5<EFBFBD><02>8Z<38>8Z<38><18>t<EFBFBD><18><05>=d<><18>r<EFBFBD><18><>=<3D><01>?\<5C>?\<5C><18>t<EFBFBD><18><05>Df<44><18>r<EFBFBD><18><00>EF<45>EF<45><18>t<EFBFBD><18><03>H<EFBFBD><48><18>r<EFBFBD><18><>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A><18><>'<27><><16>t<05>,<2C><><16>r<EFBFBD><16><00>-<2D><>-<2D><>-<2D><><16>s<EFBFBD><16><03>0D<03>2H<01>3V <0C>9<EFBFBD><02>;<3B><03>>_<01>?<3F>
<EFBFBD>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A><16><>'<27><><14><02>)y<03>+<2B><07>/<2F><05>2<EFBFBD><01>48<06>8<EFBFBD><38><14>r<EFBFBD><14><>8<EFBFBD><38><14><>/<2F> t
<EFBFBD>#<23><>#<23><> x<> <05>(<28><> t<> <00>)m<> r<> <09>,<2C><04>0_<02>2M<01>3<EFBFBD><02>5<EFBFBD><35>5<EFBFBD><35> t<> <05>:<3A><> r<> <09>;><01><|<7C><|<7C> t<> <05>A<EFBFBD><41> r<> <09>A<EFBFBD><01>Ct<43>Ct<43> t<> <03>F<EFBFBD><46> r<> <00>G-<2D> <09>/<2F>t <09> l<> l<>x<><05>%:<3A>t<><00>&<11>r<><1C>'<27><04>+<2B><02>-<2D><01>/_<02>1<EFBFBD><01>3<EFBFBD><05>8<EFBFBD><02>:<3A><01><\<01>>x<02>AD<03>C<EFBFBD><01>EC<01>F<EFBFBD><03>J~<7E>J<EFBFBD><4A>J<EFBFBD><4A><1C>'<27><>
I<04>+<2B><04>/#<03>1<EFBFBD><03>4j<03>6n<00>7k<05>:j<07>><3E><>
I<EFBFBD><06>
<EFBFBD>q?<3F>`<60><05>12ACCESSAccessfieldforreferringtotheACCESSBITSfieldsymbolically.ItsvalueisoneofthelegalvaluesoftheACCESSargumenttoOPENFILE:INPUT,OUTPUT,BOTH,APPEND;orNILwhenthestreamisclosed.ReplacingthisfieldhasthesideeffectofsettingtheBINABLE,BOUTABLE,STRMBINFNandSTRMBOUTFNfieldsappropriately(fromthecorrespondingdevicefields,ortovaluesconsistentwithnoaccess).USERCLOSEABLEFlag,trueifthestreamcanbeclosedbyCLOSEF.DefaultisT,butisNILforsuchthingsasdribblefilesandtheterminal.USERVISIBLEFlag,trueifthestreamistobelistedintheresultof(OPENP).DefaultisT,butisNILforsuchthingsasdribblefilesandtheterminal.BINABLETrueifBINmicrocodecanbeused.NormallysetautomaticallyfromFDBINABLEwheninputaccessisset.BOUTABLETrueifBOUTmicrocodecanbeused.NormallysetautomaticallyfromFDBOUTABLEwhenoutputaccessisset.EXTENDABLETrueifBOUTcanextendthebufferwhenCOFFSETreachesCBUFSIZE.Obsolete.STRMBINFNFunctioncalledbyBIN.ThisisnormallysetindirectlyasasideeffectofsettingtheACCESSfield.SettingACCESStoaninputaccess(INPUTorBOTH)setstheSTRMBINFNtobethestream'sdevice'sBINmethod.SettingtoanyotheraccesssetstheSTRMBINFNtobea``filenotopen''trap.STRMBOUTFNFunctioncalledbyBOUT.AswithSTRMBINFN,thisisnormallysetindirectly(fromthedevice'sBOUTmethod)asasideeffectofsettingtheACCESSfield.OUTCHARFNFunctioncalledtooutputasinglebyte.ThisislikeSTRMBOUTFN,exceptforbeingonelevelhigher:itisintendedfortextoutput.Hence,thisfunctionshouldconvert(CHARCODEEOL)intothestream'sactualendoflinesequence,andshouldadjustCHARPOSITIONappropriatelybeforeinvokingthestream'sSTRMBOUTFNtoactuallyputthecharacter.Defaultsto\FILEOUTCHARFN.TheOUTCHARFNforthedisplayadditionallyworriesaboutsuchthingsasECHOCONTROL.CHARPOSITIONCurrenthorizontalcharacterpositioninthestream.Incremented(andresettozero)byOUTCHARFN.UsedbythefunctionPOSITION.LINELENGTHMaximumlinelengthofthestream,incharacters.UsedbythefunctionLINELENGTH.Defaults(atcreationtime)tothevalueoftheglobalvariableFILELINELENGTH.EOLCONVENTIONThestream'sendoflineconvention:themannerinwhich``endofline''isencodedonthisstream.Thatis,outputofanendofline(functionTERPRI)producesthestream'sendoflinesequence,andoninput,thestream'sendoflinesequenceisconvertedto(CHARCODEEOL)byREADC.Thisisnotnecessarilythesameasthewaythatendoflineisencodedintheactualfilewrittenby,say,afileserver.Forexample,LispmightopenastreamtoaTenexfileserverwithEOLCONVENTIONofCR,whiletheservermightchoosetotakeeachoftheCRsinthestreamandactuallystoreaCR,LFsequenceinthephysicalfile.<00>><3E><>
I<EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68> <09><>bt<05><0E><>br<>b<01>/<05>s<04>w<02> <20><08>&
<01>'<27><02>)<29><>)<29><>bt<>b <09>2,<2C>br<>b<01>2<EFBFBD><04>5<EFBFBD> <0C>=<3D><>=<3D><02>?<3F><04>C?<01>D<EFBFBD><02>G<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>b<01>/<2F>`.<04>N<05>U<01><1F><02>"#<23>"#<23>`.x<>`.<05>&<26><>`.r<>`.<2E>'<07>-<01>.<2E><>.<2E><>`.t<>`.<07>5H<35>`.r<>`.<00>6"<22>6"<22>`.t<>`.<04>:U<>`.r<>`.<00>;<0E>;<0E>`.t<>`.<05>@<18>`.r<>`.<00>@<40><>@<40><>`.t<>`.<03>D-<2D>`.r<>`.<00>D<EFBFBD><44>D<EFBFBD><44>`.t<>`.<05>I<EFBFBD><49>`.r<>`.<00>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E>/<2F>^[<01><18><><18><>^[t<>^[<02>V<>^[r<>^[<5B><1B><03>N<02>!<21><05>%<25><01>'%<06>+<2B><>+<2B><08>2;<03>4<EFBFBD><04>7<EFBFBD><02>:<02><X<03>?<05>B<EFBFBD><01>DO<06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>^[<5B>/<2F>\<5C>t<06><10>\<5C>r<EFBFBD>\<5C><00><1D><><1D><>\<5C>t<EFBFBD>\<5C><07>$<24><>\<5C>r<EFBFBD>\<5C><00>%[<5B>%[<5B>\<5C>t<EFBFBD>\<5C><08>,<2C><>\<5C>r<EFBFBD>\<5C><>-[<02>/<2F><>/<2F><>\<5C>t<EFBFBD>\<5C> <09>8c<38>\<5C>r<EFBFBD>\<5C><>8<EFBFBD><05><q <0C>D<EFBFBD><04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><>/<2F>Z<EFBFBD> <0C><1F><05>$<06>'<27><01>)v<01>*<2A><05>.<2E> <09>5<03>8<01>9<EFBFBD><07>>6<>Z<EFBFBD><5A> <09><>WDt <0C><14><>WDr<44>WD<57>/<04><1A><03><1D><01><1E><02>!8<05>%<25><02>('<01>*<05>.9<01>00<30>00<30>WDt<44>WD<05>5:<3A>WDr<44>WD<00>6<11>6<EFBFBD><06>;<3B><01><<3C><><<3C><>WDt<44>WD<00>=<3D><>WDr<44>WD<00>><3E><02>A<01>B<EFBFBD><42>B<EFBFBD><42>WDt<44>WD<02>E<07>WDr<44>WD<57>E<EFBFBD><02>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>WD<57>/<2F>Uq<05><01><1C><06>!/<04>#<23><02>&v<02>(<28><08>-<2D><>Uq<55> <09><>Rt
<EFBFBD>1<>Rr<>R<00>/<04><03>6<01>l<02> <20><05>$<24><01>&#<01>'<27><01>)k<05>,<2C><01>.i<02>0<EFBFBD><05>4:<01>5<EFBFBD><35>5<EFBFBD><35>Rt<>R<06>;<3B><>Rr<>R<00><Z<><<3C><06>A<EFBFBD><01>B<EFBFBD><42>B<EFBFBD><42>Rt<>R<00>C<EFBFBD><43>Rr<>R<00>DP<02>F<EFBFBD><01>G<EFBFBD><47>G<EFBFBD><47>Rt<>R<02>Jj<4A>Rr<>R<00>J<EFBFBD><4A>J<EFBFBD><4A>R<00>/<2F>P-<02>><03>@<05> (<01>!<21><06>&@<04>(<28><02>+<2B><02>-<2D><08>2<EFBFBD><32>P-t<>P-<2D>3<04>P-<2D> <09><>L<EFBFBD><06>/<2F>/<2F>L<EFBFBD>r<EFBFBD>L<EFBFBD><03><1A><01><03><03>L<EFBFBD>t<EFBFBD>L<EFBFBD><02><1E><>L<EFBFBD>r<EFBFBD>L<EFBFBD><4C><08>%<25><02>(f<01>*d<04>.<02>.<2E><07>4<EFBFBD><02>6<EFBFBD> <0C>?h<03>B<EFBFBD><42>B<EFBFBD><42>L<EFBFBD>t<EFBFBD>L<EFBFBD><08>Ji<4A>L<EFBFBD>r<EFBFBD>L<EFBFBD><4C>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C>/<2F>J<EFBFBD><03><1A><04>/<05>"
<01>#K<03>%?<3F>J<EFBFBD><4A> <09><>Got<07>/<2F>/<2F>Gor<6F>Go<03>s<01><1B><><1B><>Got<6F>Go<03><18>Gor<6F>Go<47><1F><08>&<02>(<28><01>*d<04>-<2D><>.M<07>4^<02>6c <0C>><3E><03>B<04>B<04>Got<6F>Go <09>Jj<4A>Gor<6F>Go<47>J<EFBFBD><4A>J<EFBFBD><4A>Go<47>/<2F>E<EFBFBD><03><1A><05><1E><05>"<22><01>$<03>&<05>E<EFBFBD><45> <09><>B+t <09>/<2F>/<2F>B+r<>B+<03>\<01><1B><><1B><>B+t<>B+<03><1E><>B+r<>B+<2B>C<02>!<21><05>%<25><02>(<05>,<03>/<2F><>/<2F><>B+t<>B+<06>5<EFBFBD><35>B+r<>B+<2B>5<EFBFBD><06>:<3A><>:<3A><>B+t<>B+<07>AB<41>B+r<>B+<00>A<EFBFBD><41>BI<08>G<EFBFBD><47>B+<2B> <09><>><3E>t<08><11><>><3E>r<EFBFBD>><3E><>/<07>
<05> <20><01>"<22><>"<22><>><3E>t<EFBFBD>><3E><02>%q<>><3E>r<EFBFBD>><3E><00>&F<>&<26><03>)<29><01>+:<07>0<EFBFBD><02>3 <09>9&<01>:<3A><00>;<3B><03>><3E><05>B<EFBFBD><01>D6<06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>><3E><>/<2F><<3C>t<05>9<><<3C>r<EFBFBD><<3C><><05> <20><>!<21><06>&<26><>&<26><><<3C>t<EFBFBD><<3C><05>+<2B><><<3C>r<EFBFBD><<3C><>,<2C><01>.<2E><01>0<EFBFBD><04>4<EFBFBD><05>9L<00>9<EFBFBD><39><<3C>t<EFBFBD><<3C><04>=<3D><><<3C>r<EFBFBD><<3C><>><3E><01>@<40><>@<40><><<3C>t<EFBFBD><<3C><03>DG<44><<3C>r<EFBFBD><<3C><00>E<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A><<3C><>/<2F>; t<08><1E><>; r<>; <0B>3<01> <20><01>"<22><02>$<24><07>*9<07>/G<>/G<>; t<>; <02>1<EFBFBD><31>; r<>; <0B>2A<06>7<EFBFBD><37>8<06><<3C><01>>6<02>@<40><04>DS<05>HN<03>J<EFBFBD><4A>J<EFBFBD><4A>; <0B>/<2F>98<02>`<60>`<60>98t<38>98<08> <20><>98r<38>98<39>!G<01>"<22><01>$<24><00>%<25><05>(q<02>*<2A><05>.<2E><04>1d<31>98<39> <09><>5<EFBFBD>t <09>Z<>5<EFBFBD>r<EFBFBD>5<EFBFBD><35>/<07>
<05> <20><01>"<22><>"<22><>5<EFBFBD>t<EFBFBD>5<EFBFBD><03>&I<>5<EFBFBD>r<EFBFBD>5<EFBFBD><00>' <20>'<27><01>)<29><03>,<2C><>,<2C><>5<EFBFBD>t<EFBFBD>5<EFBFBD><08>4K<34>5<EFBFBD>r<EFBFBD>5<EFBFBD><00>5#<03>7<EFBFBD><01>9"<07>><3E><02>@<40> <09>G<04>J<EFBFBD><4A>J<EFBFBD><4A>5<EFBFBD><35>/<2F>3<EFBFBD><02>`<07>P<>P<>3<EFBFBD>t<EFBFBD>3<EFBFBD><03>!<21><>3<EFBFBD>r<EFBFBD>3<EFBFBD><33>"<06>'W<01>(<28><00>)<29><03>,~<05>0<01>1<EFBFBD><06>5<EFBFBD><02>8 <0B>8 <0B>3<EFBFBD>t<EFBFBD>3<EFBFBD><05>=<15>3<EFBFBD>r<EFBFBD>3<EFBFBD><33>=m<05>@r<>3<EFBFBD><33> <09><>0qt<08><11><>0qr<71>0q<30>/<07><1C><05> <20><01>",<05>&m<00>'k<05>+'<04>.`<60>.<2E><03>1<EFBFBD><01>2<EFBFBD><03>5`<60>5`<60>0qt<71>0q <09>=<3D><>0qr<71>0q<00>>w<05>B<EFBFBD><02>D<EFBFBD><04>HD<02>J<EFBFBD><4A>J<EFBFBD><4A>0q<30>/<2F>.<2E><04><1A><06><1F><01>!9<01>"<22><07>(<28><02>+E<03>.4<06>32<33>3<EFBFBD><05>8<EFBFBD><03>;<3B><07>AX<05>F<06>J<EFBFBD><4A>J<EFBFBD><4A>.<2E><>/<2F>,<2C>t<08><1F><03>##<23>,<2C>r<EFBFBD>,<2C><>#<23><03>&<26><02>(<28><07>.8<05>2<<02>4<EFBFBD><01>6<EFBFBD><03>9m<08>?<3F><02>Bi<05>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>,<2C><>/<2F>+t <0B>!C<>+r<>+<01>!<21> <0C>*<05>.K<07>3<EFBFBD><02>60<07>;i<>;i<>+t<>+ <09>C<EFBFBD><43>+r<>+<01>DC<01>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>+<01>/<2F>).<02><19><02><1B> <09>"/<2F>"<22><07>($<01>)<29><>)<29><>).t<>).
<EFBFBD>5<EFBFBD><EFBFBD>).r<>).<00>6_<36>6<EFBFBD><02>9<EFBFBD><39>9<EFBFBD><39>).t<>).<08>A9<41>).r<>).<2E>A<EFBFBD><02>C<EFBFBD><02>F@<06>J<EFBFBD><4A>J<EFBFBD><4A>).<2E>/<2F>'[ <0B><1E><06>#%<04>&<26><03>)<29><05>-<2D><01>/A<>/A<>'[t<>'[
<EFBFBD>8~<7E>'[r<>'[<00>8<EFBFBD><38>'[<5B> <09><>#<23>t <0B><08>#<23>r<EFBFBD>#<23><>/<06>3 <09>"<22><08>(E<07>-[<01>.<2E><02>1<06>5<EFBFBD><35>6
<EFBFBD>=<3D><03>@<40><04>D<01>E<EFBFBD><04>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>#<23><>/<2F>"t<08><1E><>"r<>"<00>m<><1F><03>#*<01>$<24><02>')<07>,p<>,p<>"t<>"<07>3(<28>"r<>"<00>3<EFBFBD><33>"<0E> <09><><1E>t <09>Z<><1E>r<EFBFBD><1E><>/<06><1D><03> 3<05>$=<01>%<25><02>'<27><06>,<2C><01>.
<EFBFBD>4<EFBFBD><EFBFBD>4<EFBFBD><03>8e<01>:3<02><e<07>A<EFBFBD><41>A<EFBFBD><41><1E>t<EFBFBD><1E> <09>J<12><1E>r<EFBFBD><1E><00>J<EFBFBD><4A>K<19>K<19><1E><>/<2F><1C><07><1C><02>f<07>#v<04>&<26><01>(e<02>*<2A><04>.<01>/<2F><02>1<EFBFBD><05>5<EFBFBD><07>:<3A><>:<3A><><1C>t<EFBFBD><1C>
<EFBFBD>F<EFBFBD><EFBFBD><1C>r<EFBFBD><1C><00>F<EFBFBD><46><1C><> <09><>Gt <0C>/<2F>/<2F>Gr<47>G<02><19><07><02>!<21><01>#Y<03>%<25>
<EFBFBD>-^<02>/<2F><05>4<EFBFBD><01>6'<04>:<04>=e<01>?<05>BO<01>C<EFBFBD><06>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>G<>/<2F>t<03><19><06>S<><1E><03>!<21><02>#<23><05>'<27><01>)e<01>+6<02>-<2D><01>/d<03>1<EFBFBD><08>7<EFBFBD><37>7<EFBFBD><37>tt<74>t<05><<3C><>tr<74>t<00>=<3D><07>Cf<02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>t<>/<2F><15><02><19><01><1B><03>B<08>$z<02>'+<01>)+<05>-&<02>/<07>4<EFBFBD><02>7u<01>9)<03>;<3B><07>A<EFBFBD><01>C<08>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><15><>/<2F><13>t<08><1F><03>"<22><><13>r<EFBFBD><13><>#d<01>%@<40>%@<40><13>t<EFBFBD><13><04>)s<><13>r<EFBFBD><13><00>*/<2F>*<2A><03>-<2D><01>.<2E><02>1,
<EFBFBD>7<EFBFBD><02>:<03>=|<01>? <02>AI<02>D<03>F<EFBFBD><02>I6<01>J<EFBFBD><4A>J<EFBFBD><4A><13><>/<2F><03><19><01><06> j<01>!<21><02>$:<05>(<03>*e<06>.<2E><02>1,<03>3<EFBFBD><00>4<EFBFBD><03>7<06>;_<>;<3B><02>>R<07>D<03>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A><04>/<2F>:<03><1A><00><1B><05> K<01>!<21><00>#/<04>'a<03>)<29><05>-<2D><03>1<00>1<00>:t<>: <0C>;<3B><>:r<>:<3A><v<01>>5<>>5<>:t<>:<01>?<3F><>:r<>:<00>@<40><04>D<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>:<3A>/<2F>g<04><1A><05>R<01> <20><03>#<23><03>&<26><01>(9<02>*m<>*m<>gt<67>g<01>,<1B>gr<67>g<00>,<2C><01>.<02>0<EFBFBD><05>4<EFBFBD><02>7<EFBFBD><07><m<04>?<3F><00>@<40><>@<40><>gt<67>g<01>BM<42>gr<67>g<00>C<01>C<01>gt<67>g<01>D<EFBFBD><44>gr<67>g<>E
<07>J<EFBFBD><4A>J<EFBFBD><4A>g<>/<2F> <0C><01><18><02><1A><07><1F><04>":<3A> <0C> y
<EFBFBD>q?<3F>`<60>613Theconventionisencodedasatwo-bitfield;theconstantsCR.EOLC,LF.EOLC,CRLF.EOLCcanbeusedtorefertothecurrentlyknownvaluessymbolically.DefaultinInterlisp-DisCR.EOLC.ENDOFSTREAMOPFunctionofoneargument(thestream)calledwhenanattempttoreadbeyondtheendoffileoccurs.Ifthisfunctionreturnssomething,itshouldbeinterpretedasavaluetoreturnfromBIN(thevalueTiscurrentlyprohibited).Defaultsto\EOSERROR,whichcausesanENDOFFILEerror.VALIDATIONPointerfield,somecompactencodingofthestateofthefilesuchthatifthefile'scontentchanges,theVALIDATIONchanges.Thefile'sICREATIONDATEattributeusuallyworkswellenough.TheonlyuseforthisfieldistocheckwhetherthefilechangedoverLOGOUT,etc.iftheVALIDATIONofthestreamreturnedfromREOPENFILEisEQUALtotheVALIDATIONofthestreamopenbeforeLOGOUT,thestreamisassumedtobeunchnaged.Thiswillprobablybethesoleconcernofthedevicewhenwegotomultiplestreamsperfile.BYTESIZEBytesizeofthefile,i.e.,whatBINandBOUTtrafficin.Defaultsto8.Thisfieldisnotusedbymany;thereareprobablyalotofthingsthatwon'tworkifthebytesizeisnot8.OTHERPROPSListinpropertylistformatusedbythefunctionSTREAMPROP.AnalogoustoWINDOWPROP,etc.IMAGEOPSImageoperationsvector(objectoftypeIMAGEOPS)foruseofdevice-independentgraphicsoperations,suchasDSPXPOSITION,DSPFONT.Defaultsto\NOIMAGEOPS,avectorsuitablydefinedfornon-displaydevices.Seetheimplementors'manualchapterDevice-IndependentGraphics.IMAGEDATADevice-dependentdataforusebyIMAGEOPS.REVALIDATEFLGFlag.Thestandarduseofthisflagistosolveaproblemwithcorrectlymaintainingthecreationdate.Theproblemisthatthedefinitionof``creationdate''isthatthecreationdatechangeswheneverthecontentsofthefilechange.Iffollowedliterally,thiswouldmean,forexample,thatevertimeyouwroteoutapageofa{DSK}file,youwouldalsohavetorewriteitsleaderpagewithanewcreationdate.However,itsufficesinpracticetoonlychangethecreationdatewhenitwouldmatter,i.e.,whentherewouldbeanypossibilityofsomeagentotherthanthecurrentlyrunningLisptoseethechange.Usually,thismeanstheonlytimetoworryaboutiswhentheLispvmemissavedandafilethatwasopenbeforethesaveiswrittentoagainafterwards.Thus,theuseofthisflag(forthosedevicesthatcare)isasfollows:thedevice'sBEFORExxxeventssetthisflagtrueforanystreamsopenonthedevice.Then,wheneverthedeviceisabouttodosomethingthatwouldchangethefile'scontent,e.g.,writeoutanewpage,itfirsttestsREVALIDATEFLG.Iftheflagistrue,itupdatesthefile'screationdateandclearstheflag.NONDEFAULTDATEFLGFlag.StandarduseisinconjunctionwithREVALIDATEFLG,tomarkafilethatwasopenedinawaythattheuserconstrainedthecreationdateofthefile(e.g.,thePARAMETERSargumenttoOPENFILEincludedanexplicitcreationdate,ortheoptionDON'T.CHANGE.DATE).<00>":<3A> <0C><>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<12>hsp<01>Jj<4A>hs<68>/<2F>br<02>3 <09>!l<01>#<06>(<28><01>*<2A><00>+<2B><06>0<EFBFBD><05>4<EFBFBD><02>7'<08>=D<>=D<>bt<>b<06>C%<25>br<>b<00>D0<44>D0<44>bt<>b<06>J<11>br<>b<00>J<EFBFBD><4A>J<EFBFBD><4A>b<01>/<2F>`.t<08><1E><>`.r<>`.<2E>*<02>!<21><01>#q<03>&<26><01>(&<04>+]<01>,<2C><02>/6<08>4<EFBFBD><04>9^<05>=p <0C>E<EFBFBD><45>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E>/<2F>^[<01><18>
<EFBFBD><1F><01> <20><> <20><>^[t<>^[<06>&<26><>^[r<>^[<00>' <09>^[<5B> <09><>Z<EFBFBD>t <0C><14><>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>/<07><1C><01><1E><02>!<07>'<03>)<29><06>.<2E><05>2f<03>5<EFBFBD><01>7<EFBFBD><06><<3C><01>>=<03>A5<05>E<EFBFBD><02>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>Z<EFBFBD><5A>/<2F>Y<01><18><03><06><1F><> <01>!n<03>#<23><07>)N<06>-<2D> <09>4<EFBFBD><01>5<EFBFBD><05>:Y<01><0
<EFBFBD>C"<01>D<EFBFBD><00>E<EFBFBD><04>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>Y<0E>/<2F>WD<05>:<03><><>WDt<44>WD<02>!<04>WDr<44>WD<57>!i<03>$ <04>'<27><>'<27><>WDt<44>WD<00>(~<7E>WDr<44>WD<57>(<28><01>*-<08>/<2F> <0B>7G<37>7<EFBFBD><07>= <01>><3E><>><3E><>WDt<44>WD<08>F(<28>WDr<44>WD<00>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>WD<57>/<2F>Uq<05>9<01><1C><><1C><>Uqt<71>Uq<02> X<01>"<22><03>&9<>Uqr<71>Uq<55>&<26><05>)<29><>Uq<55> <09><>Q<EFBFBD>t <09>Z<>Q<EFBFBD>r<EFBFBD>Q<EFBFBD><51>/<06><05><1F><03>#n<06>)<07>/<01>0<EFBFBD><02>3T<04>6<EFBFBD><01>8x<02>:<3A><03>=y<03>@<40><03>C<EFBFBD><01>E/<02>G<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>Q<EFBFBD><51>/<2F>P$<06>0<07>!<21><02>$F<>$F<>P$t<>P$ <09>,<2C><>P$r<>P$<24>-L<07>2<EFBFBD><32>3<EFBFBD><02>6z<05>9<EFBFBD><39>9<EFBFBD><39>P$t<>P$ <0C>D<EFBFBD><44>P$r<>P$<24>Ec<08>J<EFBFBD><4A>J<EFBFBD><4A>P$<24>/<2F>NQ<06><1B><04><1F><03>"<22><06>(B<>(<28><02>+<2B><03>.<2E><02>1f<02>3<EFBFBD><03>6`<04>9<EFBFBD><01>;<01><<3C><04>@<40><06>F<02>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>NQ<4E>/<2F>L<EFBFBD><06><1C><03> s<> s<>L<EFBFBD>t<EFBFBD>L<EFBFBD><05>%}<7D>L<EFBFBD>r<EFBFBD>L<EFBFBD><00>&<26><06>+<2B><02>.<2E><>.<2E><>L<EFBFBD>t<EFBFBD>L<EFBFBD> <09>7<05>L<EFBFBD>r<EFBFBD>L<EFBFBD><4C>7<EFBFBD><01>:<02><<3C><05>A<EFBFBD><07>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C>/<2F>J<EFBFBD>t <09><1F><>J<EFBFBD>r<EFBFBD>J<EFBFBD><4A>
<01>!d<>!d<>J<EFBFBD>t<EFBFBD>J<EFBFBD><04>%<25><>J<EFBFBD>r<EFBFBD>J<EFBFBD><4A>& <01>'<27><02>)<29><>)<29><>J<EFBFBD>t<EFBFBD>J<EFBFBD> <09>2[<5B>J<EFBFBD>r<EFBFBD>J<EFBFBD><4A>2<EFBFBD><01>4v<02>6<EFBFBD><05>;!<03>><3E><05>B<EFBFBD><42>B<EFBFBD><42>J<EFBFBD>t<EFBFBD>J<EFBFBD><05>G<EFBFBD><47>J<EFBFBD>r<EFBFBD>J<EFBFBD><00>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>J<EFBFBD><4A>/<2F>H<EFBFBD><05><1B><01><1C><06>"C<01>#<23><01>%<25> <09>,<2C><>-G<>-G<>H<EFBFBD>s<EFBFBD>H<EFBFBD><03>/<2F><03>1<EFBFBD><07>6P<01>7<EFBFBD><02>9<EFBFBD><03>;<3B><06>?<3F><01>A!<02>B<EFBFBD><05>FJ<03>I<01>J<EFBFBD><4A>J<EFBFBD><4A>H<EFBFBD><48>/<2F>G<01><18><01><19><07><06>!<21><02>#<23><04>%n<>Gr<>G<17>%t<>G<17> <09><>C<EFBFBD>t<07><10><>C<EFBFBD>r<EFBFBD>C<EFBFBD><43>/<03>><03><1C><01>a<02> <20><04>#?<04>%<25><03>(<28><>(<28><>C<EFBFBD>t<EFBFBD>C<EFBFBD><02>+s<>C<EFBFBD>r<EFBFBD>C<EFBFBD><43>+<2B><02>.p<>.p<>C<EFBFBD>t<EFBFBD>C<EFBFBD><03>1<EFBFBD><31>C<EFBFBD>r<EFBFBD>C<EFBFBD><43>22<06>6<02>8<02>8h<07>=<3D><01>?W<01>@<40><>A*<03>D"<04>G0<01>H{<02>J<EFBFBD><4A>J<EFBFBD><4A>C<EFBFBD><43>/<2F>A<EFBFBD><03><<01>
<04> <04>#y<02>%<25><07>+><00>,;<02>.<01>/<2F><05>3<EFBFBD><03>6/<04>9<EFBFBD><03>=<01>>J<02>@{<03>C\<03>E<EFBFBD><01>G<02>I\<01>Jc<4A>A<EFBFBD>t<EFBFBD>A<EFBFBD><41>Ji<4A>A<EFBFBD><41> <09><>>Y <09>/<2F>/<2F>>Yr<59>>Y<03>J<01>S<07>"E<03>$<24><05>)<29><03>-G<01>/<2F><02>2X<07>8(<28>8(<28>>Yt<59>>Y <09>@<40><>>Yr<59>>Y<00>A<EFBFBD><41>B<EFBFBD><08>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>>Y<>/<2F><<3C>t <09><1F><><<3C>r<EFBFBD><<3C><00> E<03>"O<><<3C><> <09><>9 t<07>/<2F>/<2F>9 r<>9 <04>{ <09>"A<05>&<26><06>+.<01>-<03>04<30>04<30>9 t<>9 <07>6<EFBFBD><36>9 r<>9 <00>8
<02>:f<02><<3C><01>><3E><11>J<EFBFBD><4A>J<EFBFBD><4A>9 <0C>/<2F>79<07>|
<EFBFBD>#_<03>&q<01>(<03>(<03>79t<39>79 <0B>2<17>79r<39>79<00>2<EFBFBD><32>2<EFBFBD><32>79t<39>79<06>8<EFBFBD><38>79r<39>79<00>9x<39>9<EFBFBD><07>?D<01>@<40><>@<40><>79t<39>79
<EFBFBD>J<11>79r<39>79<00>J<EFBFBD><4A>J<EFBFBD><4A>79<37>/<2F>5f<00><18><05><1C><07>"2<06>'c<02>)<29>
<EFBFBD>1u<07>6<EFBFBD><36>7<02>:H<02><<3C> <0C>F<05>J<EFBFBD><4A>J<EFBFBD><4A>5f<35>/<2F>3<EFBFBD><06><1B><><1B><>3<EFBFBD>z<EFBFBD>3<EFBFBD><11>'<27><07>-<1B>3<EFBFBD>r<EFBFBD>3<EFBFBD><00>-x<>3<EFBFBD><33> <09><>0
t<08><11><>0
r<EFBFBD>0
<EFBFBD>/<0F>"O<03>%%<02>'4<02>){<01>+I<>+I<>0
t<EFBFBD>0
<07>2<01>0
r<EFBFBD>0
<00>2<EFBFBD><32>2<EFBFBD><32>0
<EFBFBD> <09><>,<2C>t <0C><14><>,<2C>r<EFBFBD>,<2C><>/<04><1A><><1A><02><1D><07>#<02>%k<01>'<03>)<29><03>,<01>-`<01>.<2E><04>2F<00>3O<06>8<EFBFBD><03>;<3B><08>A$
<EFBFBD>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>,<2C><>/<2F>*<2A><07>O<04><1F><><1F><02>"<22><06>(<01>)]<03>, <02>.M <09>4s<01>6 <09>;<3B><05>?t<01>@<40><03>Cq<02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>*<2A><>/<2F>(<28><03><06> <07>%4<02>'t<07>,<2C><01>.[<02>0<EFBFBD><03>2<EFBFBD><06>7<EFBFBD><37>8+<01>9<EFBFBD><07>? <09>DD<03>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>(<28><>/<2F>')<04><02>.<07>"<22><03>%u<03>(N<03>+H<02>-<2D><04>1~<02>3<EFBFBD><00>4<EFBFBD><03>7<EFBFBD><01>9s<00>:s<>:s<>')t<>')<04>><3E><>')r<>')<29>?<04>A<EFBFBD><02>D$<04>H$<03>J<EFBFBD><4A>J<EFBFBD><4A>')<29>/<2F>%V<03>K<01><1B><06> J<02>!<21><05>%<25><03>) <03>+<2B><00>,<2C><02>/<2F><07>4<EFBFBD><04>8<03>8_<07>>f<01>?<3F><07>DO<01>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>%V<>/<2F>#<23><01><18><03><1B><05> u<02>"<22><07>'<27><03>*<2A><03>.<2E><01>/<2F><04>3<EFBFBD><06>8<EFBFBD><04>;)<03>><3E><04>BL<04>Fj<01>HN<02>J<EFBFBD><4A>J<EFBFBD><4A>#<23><>/<2F>!<21>
<EFBFBD><1D><01><1F><03>#U<04>')<04>*<2A><03>.,<02>0<EFBFBD><08>6<EFBFBD><06>;<3B><03>?1<01>@<40><02>Cs<02>E<EFBFBD><06>J<EFBFBD><4A>K<19>K<19>!<21><>/<2F><1F><07>j<03><1E><04>#<02>%=<03>(1<03>+0<01>,<2C><04>0<EFBFBD><04>4D<01>5<EFBFBD><03>9<02>;T<03>>H<03>BP<01>C<EFBFBD><04>G<<02>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A><1F><>/<2F>.<03>i<03><02><1E><03>!<21><05>%<25><02>(<03>*<2A><01>,-<06>0<EFBFBD><01>2/<04>5<EFBFBD>
<EFBFBD><+<2B>.<2E> <09><><1A><>/<04>5<02><1D><02> n<01>"Y<03>%,<03>(<03>*<2A><04>.<2E><06>3<EFBFBD><03>6<EFBFBD><04>:]<01>;<3B><01>=<3D><07>C@<02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A><1A><>/<2F><18>t<08><1E><><18>r<EFBFBD><18><>o<05>#<23><02>&<03>(<28><03>+<2B><03>.<2E><02>1@<02>4
<06>9+<03><<3C><01>><3E><02>A<EFBFBD><06>FI<46>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A><18><>/<2F> <07>;<02>t<05>#<23><01>$<24><04>(<28><01>*<01>+<2B><08>2q<03>5<04>9<05>=<3D><02>?<3F><05>B<EFBFBD><07>H<04>J<EFBFBD><4A>J<EFBFBD><4A> <20>/<2F>V<04><1A><02><1C><00><02> <20><04>$g<01>%<25><04>(h<04>+a<>+a<>Vt<56>V <0C>6L<36>Vr<56>V<00>7<12>7<EFBFBD><01>8<EFBFBD><02>;8<03>=<3D><01>?.<04>BS<01>C<EFBFBD><06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>V<>/<2F><13><05>E<07>U<03>"+<02>$<24><05>(Z<02>*<2A><04>-<18><13><> <09><>t<10>;<3B>r<><12><18><04>,<2C><1C><07>"D<02>$<24><01>%<25><01>'h
<EFBFBD>.<2E><03>1<EFBFBD><31>1<EFBFBD><31>t<> <0C><<3C><>r<><00>=W<01>><3E><03>BO<00>CV<03>E<EFBFBD><03>HC<02>J<EFBFBD><4A>J<EFBFBD><4A><12>/<2F>?<05><<01><00>x<02>"<22><03>%<25><02>(<03>+;
<EFBFBD>2<EFBFBD><02>5K<07>:<3A><03>=<3D><01>?<3F><02>Bk<03>E<05>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>?<3F>/<2F> ux <09> <0B> ur<75> u<>v<07>%<25><01>'<15>'<15> ut<75> u<07>-<2D><> ur<75> u<>.8<07>3<EFBFBD><01>5<EFBFBD><07>:H<07>?k<04>B<EFBFBD><01>DU<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A> u<>/<2F>
<EFBFBD>t<10>%v<>
<EFBFBD>r<EFBFBD>
<EFBFBD><01>&L<>
<EFBFBD><EFBFBD>

<EFBFBD>q?<3F>`<60><06>14F1,F2,F3,F4,F5Pointerfieldsforprivateusebythestream,tomaintainstream-specificstateofconcernonlytothedevice.StreamclientsthatwishtohanginformationonastreamwithoutregardtowhatkindofstreamitisshouldusethefunctionSTREAMPROP.FW6,FW7,FW8,FW916-bitwordfieldsforprivateusebythestream.DIRTYBITSObsolete.EXTRASTREAMOP?BufferedStreamsBufferedstreamsareonesthatconstrainthemselvestoobeyasetofconventionsthatmakeiteasyforanagent(e.g.,microcode)toperforminputoroutputonthestreamwithoutknowingaboutthedetailsofthestream'sphysicali/o.Thestreammaintainsa``currentbuffer''andtwoindicesintothatbuffer,theoffsetofthenextbyte,andtheoffsetoftheendofthebuffer.Aslongastheformerindexislessthanthelatter,thestreamguaranteesthatthebytesinthebufferbetweenthoseindicesarethetruecontentsofthefile/streamstartingatthecurrentfilepointer.Advancingthefirstindexeffectivelyadvancesthefilepointer.Whenitreachesthesecondindex,astream-specificoperationiscalledto``refill''thebuffer.Thefollowingfieldsareusedbybufferedstreams:COFFSETByteoffsetinthebufferCBUFPTRofthenextBINorBOUT.CBUFSIZE``Size''ofthecurrentbuffer,i.e.,byteoffsetthatisonebeyondthelastbyte.CBUFMAXSIZEForoutput,themaximumsizethebuffercanbewrittento.IfCOFFSETreachesCBUFSIZE,butCBUFSIZEislessthanCBUFMAXSIZE,thenthebuffercanbeextended.CBUFPTRPointertocurrentbuffer.MustbevalidifCOFFSETislessthanCBUFSIZEandBINABLEorBOUTABLEistrue.Itisnotnecessarythatthis``buffer''beanythingotherthansomechunkofmemory,aportionofwhichcontainsinterestingdata.Thus,thebytesfromoffsetCOFFSETtoCBUFSIZEmustbevalid,butCOFFSETneednotstartatzero,norneedCBUFSIZEorCBUFMAXSIZEcoincidewiththeendoftheunderlyingstructure.CBUFDIRTYFlag,trueifcurrentbufferhasbeenwrittento.Ingeneral,thedevicehassoleresponsibilityforsettingCBUFSIZE,CBUFMAXSIZE,andCBUFPTR;genericcodedoesnottouchthose.ThefieldsCOFFSETandCBUFDIRTYcanbechangedbygenericstreamclientsaswellasbydevice-specificcode.Forexample,codethatsimulatesaBINincrementsCOFFSET;codethatwritesdirectlytothestream'sbuffersetsCBUFDIRTYtrue.Thefollowingmethodsaredefinedfordevicesimplementingbufferedstreams:(GETNEXTBUFFERSTREAMWHATFORNOERRORFLG)[Devicemethod]CalledwhenSTREAMneedstohaveitsbufferfixed,i.e.,thestateofSTREAMissuchthatBIN(WHATFOR=READ)orBOUT(WHATFOR=WRITE)cannotproceed.Thismethodshoulddo<00>&L<>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68> <09><>bt<01> <0B><>br<>b<00> R<> R<>bt<>b<01><00>br<>b<00><0E><><0E><>bt<>b<01>^<5E>br<>b<00><0E><0E>bt<>b<01><12><>br<>b<00>l<>l<>bt<>b<01><1A>br<>b<01>r<>/<06><1B><05>`<02>!u<06>%<25><02>(3<01>*<02>,><06>0<EFBFBD><01>2b<07>7<EFBFBD><0E>A<04>D<01>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>b<01>/<2F>`.<03>;<01><1B><02>0<06>"<22><>#8<05>'<27><06>,<03>.<2E><03>1<EFBFBD><01>3<EFBFBD><03>6<EFBFBD>
<EFBFBD>>l<01>@f<00>A<EFBFBD><05>E<EFBFBD><06>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E>/<2F>^d<05>O<01><1C><03><1F><03>"<22><01>$<24><05>(<28><01>)<29><01>+/<05>/y<02>1<EFBFBD><02>3<EFBFBD><07>98<39>98<39>^dt<64>^d <09>A<EFBFBD><41>^dr<64>^d<00>A<EFBFBD><41>^d<> <09><>Z<EFBFBD>t<02> y<>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><00>
)<29>
)<29>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><02><0F><>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><00>^<5E>^<5E>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><02><12><>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><00><13><><13><>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><02><18>Z<EFBFBD>r<EFBFBD>Z<EFBFBD><5A>/<05><1A><03>O<05>!<21><02>#<23><06>(N<02>*<2A><01>,c<02>.<2E><06>2<EFBFBD><32>Z<EFBFBD>t<EFBFBD>Z<EFBFBD><5A>3<EFBFBD><33>4<EFBFBD><34>4<EFBFBD><34>Z<EFBFBD>y<EFBFBD>Z<EFBFBD><5A>4<EFBFBD><34>Z<EFBFBD><5A> <09><>Wpt<08><11><>Wpr<70>Wp<57>/<08><1C><>Wp<57> <09><>S<EFBFBD>t <0C><14><>S<EFBFBD>r<EFBFBD>S<EFBFBD><53>/<00><17><>S<EFBFBD><53> <09><>Oav<07>c<06>(<28>Oar<61>Oa<4F>.<2E>Oa<4F> <09><>K<EFBFBD><07><0F><06>J<02>t<03>y<03><08>!<21> <09>(<28><01>*<03>-J<00>.K<02>0><01>1<EFBFBD>
<EFBFBD>91<03>;<3B><03>?]<01>@<40><03>Cb<02>Eu<01>G;<04>J<EFBFBD><4A>J<EFBFBD><4A>K<EFBFBD><4B> <09><>I<EFBFBD><05>
4 <09>;<01><15><06>
<04><1E><01> B<05>$<24><01>&<26><02>(<28><05>-<06>2 <06>7<EFBFBD><04>;I<02>=<3D><06>A<EFBFBD><01>C_<02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>I<EFBFBD><49> <09><>H%<07>#<03><11><><02><14><05>0<08>Q<00> b<08>%<25><07>*<2A><02>-<02>/<2F><06>4/<03>6<EFBFBD><03>9<EFBFBD><06>> <02>@N<05>C<EFBFBD><01>E<EFBFBD><02>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>H%<25> <09><>F[<04>
O<02><0F><02>N<05> <01><17><02>
<02><1C><01>f<02> <20><06>%2<>%<25><01>'<27><03>*<2A><01>,b<02>.<2E><05>3:<04>6<EFBFBD><01>8X<03>:<3A><03>=<3D><02>@N<06>D-<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>F[<5B> <09><>D<EFBFBD> <09><10><03>7<02>k<04><18><01>W<02><1C><05> <20><06>%<25><04>)A<06>-<2D><02>/<2F><02>2 <03>4<EFBFBD><07>:<01>;<3B><02>=<3D>
<EFBFBD>D<EFBFBD><07>IV<01>J<EFBFBD><4A>J<EFBFBD><4A>D<EFBFBD><44> <09><>B<EFBFBD><02> =<06><10><03>A<07>G<><18><08><1F><02>!<21><04>$<24><04>(?
<EFBFBD>.<2E><07>4v<02>6<EFBFBD><03>9<07>><17>><3E><03>B<EFBFBD><01>C<EFBFBD><06>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>B<EFBFBD><42> <09><>@<40><05>U<05>H<00>E<0E>_<08>"U<01>#<23><05>'Y<01>(<28> <09>-Y<02>/<2F><06>3<EFBFBD><33>@<40><> <09><>=<3D><02> <0C><08>{<05><15><02>%<03>2<01><07>"j<07>'V<>=<3D><> <09><>:t<06>/<2F>/<2F>:r<>:<03>0<05><1D><01>K<02>!|<05>%{<7B>%{<7B>:t<>:<06>+\<5C>:r<>:<1B>+<2B><01>-?<02>/p<03>2Q<32>2Q<32>:t<>:<02>4<EFBFBD><34>:r<>:<1B>5.<01>6<EFBFBD><36>6<EFBFBD><36>:t<>:<03>: <20>:r<>:<00>:}<7D>:<1B> <09><>6<EFBFBD>t<07>/<2F>/<2F>6<EFBFBD>r<EFBFBD>6<EFBFBD><07>M<01><1C><02> <06>#<23><06>'<27><04>*^<03>-?<05>0<EFBFBD><03>3y<01>4<EFBFBD><02>74<05>;<3B><02>><03>@o<04>CU<43>6<EFBFBD><36> <09><>3't
<EFBFBD>/<2F>/<2F>3'r<>3'<02><19><06><1E><02>!^<06>'<27><03>*<2A><02>-E<05>1<EFBFBD><02>4=<01>6N<06>;<02>=C<>=<3D><01>?<3F><>?<3F><>3't<>3'<06>Em<45>3'r<>3'<27>F<06>J<EFBFBD><4A>J<EFBFBD><4A>3'<27>/<2F>1Tt<07><1D><>1Tr<54>1T<00><02>!<21><>!<21><>1Tt<54>1T<07>(<28><>1Tr<54>1T<31>)w<01>+4<03>.<03>1<EFBFBD><31>1<EFBFBD><31>1Tt<54>1T
<EFBFBD>:<3A><>1Tr<54>1T<00>;<3B><03>?s<02>B#<05>F<EFBFBD><02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>1T<31>/<2F>/<2F><08><1C><>/<2F><> <09><>,t<06>/<2F>/<2F>,r<>,<06><01><1D><06>"<22><06>'p<>(<03>+<2B><01>-<2D><04>1X<01>2<EFBFBD><32>2<EFBFBD><32>,t<>,<06>8<EFBFBD><38>,r<>,<10>9\<01>:<3A><03>=<3D><03>@<40><>@<40><>,t<>,<07>G<EFBFBD><47>,r<>,<10>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>,<10>/<2F>*=t<06><10>*=r<>*=<3D>l<01><06><06>*=t<>*=<07>%<25><>*=r<>*=<3D>&<01>']<04>*m<>*<2A><01>,<01>-Z<02>/<2F><08>5<EFBFBD><03>8.<03>:<3A> <09>@<01>A<EFBFBD><07>GR<04>J<EFBFBD><4A>J<EFBFBD><4A>*=<3D>/<2F>(j<03>J<03><1D><04>!<21><01>#<23><06>)[<00>*|<06>/L<01>0<EFBFBD><04>4<EFBFBD><07>:P
<EFBFBD>@<40><04>DK<44>D<EFBFBD><04>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>(j<>/<2F>&<26><04><1A><03><1D><05>!<21><>!<21><>&<26>t<EFBFBD>&<26><06>'<27><>&<26>r<EFBFBD>&<26><>'<27><01>)<29><>)<29><>&<26>t<EFBFBD>&<26><07>0I<30>&<26>r<EFBFBD>&<26><>0<EFBFBD><03>4<01>5<EFBFBD><05>9<EFBFBD><02>;<3B><>;<3B><>&<26>t<EFBFBD>&<26><06>A<EFBFBD><41>&<26>r<EFBFBD>&<26><>B?<03>E<EFBFBD><02>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>&<26><>/<2F>$<24><01>'<04><1C><02><1F><03>#<23><>#<23><>$<24>t<EFBFBD>$<24><07>*;<3B>$<24>r<EFBFBD>$<24><>+ <01>-C<>-C<>$<24>t<EFBFBD>$<24>
<EFBFBD>6<EFBFBD><EFBFBD>$<24>r<EFBFBD>$<24><>7e<07>=-<03>@<40><02>Cc<02>Fy<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>$<24><>/<2F>"<22> <09><1D> <09>#|<7C>"<22><> <09><><1F>t<08>/<2F>/<2F><1F>r<EFBFBD><1F><04>|<03>1<01>d<06>"<22><05>&<26><02>)C<03>,q<06>0<EFBFBD><02>2r<32><1F>t<EFBFBD><1F><>2x<32><1F><> <09><>r<01> <0B><07><10><02><05>B<02><19><03>]
<EFBFBD>$<24><02>&<26><06>+-<2D>+-<2D>t<><07>1<EFBFBD><31>r<><00>2<EFBFBD><32>2<EFBFBD><32>t<>
<EFBFBD>;<3B><>r<><00><<3C><02>?\<5C>?\<5C>t<><06>E=<3D>r<><00>F)<06>J<EFBFBD><4A>J<EFBFBD><4A><0F> <09><><<03>
<03><02>]<04><05><19><>+<02><1C><05> _<> _<><t<><<06>&@<40><r<><<3C>&<26><02>))<29>))<29><t<><<08>0<EFBFBD><30><r<><<3C>1<02>3t<01>5:<06>:|<01><M<06>@<40><05>E-<06>I@<01>J<EFBFBD><4A>J<EFBFBD><4A><<3C> <09><>i<03> <0C><01><0E><01><10><0E><19><04>l<><1D><02> <20><07>&<26><03>)<29><03>,<2C><08>2<EFBFBD><00>3<EFBFBD><33>3<EFBFBD><33>it<69>i<02>6`<60>ir<69>i<>6<EFBFBD> <09>=<3D><>=<3D><>it<69>i<06>C<EFBFBD><43>ir<69>i<00>D<EFBFBD><03>H#<03>J<EFBFBD><4A>J<EFBFBD><4A>i<> <09><><16><05>
<EFBFBD><07><12><01> <02>:<07>W<05>V<03>!<21><>!<21><><16>t<EFBFBD><16><08>)X<><16>r<EFBFBD><16><>)<29><04>,j<><16><> <09><><02> <0C><08>{<06><17><02><19><06><1E><02> <20><06>%u <0B>-<2D><07>3i<07>8U<38><1C> <09><><0F>t
<EFBFBD><16><><16><><0F>x<EFBFBD><0F><05>[<5B><0F>t<EFBFBD><0F><>2<>2<><0F>x<EFBFBD><0F><06>"<12><0F>t<EFBFBD><0F><>"<22><>"<22><><0F>x<EFBFBD><0F> <09>*<2A><><0F>t<EFBFBD><0F><00>+<2B><><0F>r<EFBFBD><0F><>@<40><06>E<EFBFBD><06>Jl<4A><0F>t<EFBFBD><0F><>Ob<4F><0F><><10><> <0C>r<05><14><03><18><><18><> <0C>x<EFBFBD> <0C><05>~<7E> <0C>r<EFBFBD> <0C><><04>!<21><01>#<23><03>'<02>(<28><05>-<05>0<EFBFBD><04>3<EFBFBD><02>6<04>9;<01>:<3A><>:<3A><> <0C>x<EFBFBD> <0C><05>?<3F><> <0C>r<EFBFBD> <0C><>@]<01>A<EFBFBD><03>E
<03>G<EFBFBD><47>G<EFBFBD><47> <0C>t<EFBFBD> <0C><02>Ji<4A> <0C>r<EFBFBD> <0C><>J<EFBFBD><4A>J<EFBFBD><4A> <0C><><10><>
<EFBFBD><00>
<EFBFBD>
<EFBFBD>x<EFBFBD>
<EFBFBD><06><16><>
<EFBFBD>r<EFBFBD>
<EFBFBD><EFBFBD>}<00>p<>p<>
<EFBFBD>t<EFBFBD>
<EFBFBD><03><1C><>
<EFBFBD>r<EFBFBD>
<EFBFBD><00><1D><01><1F><><1F><>
<EFBFBD>t<EFBFBD>
<EFBFBD><03>#<04>
<EFBFBD>r<EFBFBD>
<EFBFBD><EFBFBD>#<23><00>$<10>
<EFBFBD>x<EFBFBD>
<EFBFBD><06>)<29><>
<EFBFBD>r<EFBFBD>
<EFBFBD><EFBFBD>*<2A><00>,v<>,v<>
<EFBFBD>t<EFBFBD>
<EFBFBD><04>0<EFBFBD><30>
<EFBFBD>r<EFBFBD>
<EFBFBD><00>1<EFBFBD><05>6;<07>;<3B><><f<03>?<3F><05>D<EFBFBD><05>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>
<EFBFBD><08>
<EFBFBD>q?<3F>`<60>h15whateverisnecessarytoallowtheoperationtoproceed.Thistypicallyincludesdisposingofthecurrentbuffersomehow(ifGETNEXTBUFFERwasinvokedbecausethebufferwasexhausted),andfetchinganewbufferconsistentwithSTREAM'scurrentposition.InthecaseofWHATFOR=READ,GETNEXTBUFFERreturnsTonsuccess,i.e.,ifSTREAMisnotatendoffile.WhenSTREAMisatendoffile,GETNEXTBUFFERshouldtakestandardendofstreamaction,returningwhatever\EOF.ACTIONreturns(ifanything).However,ifNOERRORFLGistrue,GETNEXTBUFFERshouldjustreturnNILimmediately.(RELEASEBUFFERSTREAMBUFFER)[Devicemethod]Performsanydevice-specificoperationrequiredwhenBUFFER,whichisthecurrentvalueofSTREAM'sCBUFPTRfield,is``released''(whentheCBUFPTRfieldisreplaced).Thisisusedsothatdifferentpagemap-likedevicescansharecertaincode.Forexample,inthecaseofpagemappedstreams,RELEASEBUFFERmarksthebufferdirtyinthecasethatthestream'sCBUFDIRTYfieldhasbeenset.Thismethodisnotcurrentlyused.Thefunctions\BUFFERED.BIN,\BUFFERED.PEEKBIN,\BUFFERED.BOUT,\BUFFERED.BINSand\BUFFERED.BOUTSaresuppliedforusebybufferedstreams;theyarestandardlyusedtoimplementtheBIN,PEEKBIN,BOUT,BLOCKINandBLOCKOUTdevicemethods.Inaddition,thefunctionCOPYBYTES,whenpresentedwithasourcestreamthatisbuffered,utilizestheGETNEXTBUFFERmethodtoefficientlycopybytestothedestinationabuffer-fullatatime.PagemappedStreamsPagemappedstreamsareaparticularkindofrandomaccessBufferedstreamthatbuffersitsdatainunitsofpages.Thedeviceprovidesmethodsthatreadorwritedatainunitsofpages,whilesystem-suppliedPagemappedfunctionshandletheresponsibilitiesofaBufferedstream,aswellasmanagingthefilepointerforrandomaccess.Ingeneral,astreamcanhaveseveralpagesofafilebufferedatatime,allowingthecodetomakesomeefforttomakeefficientuseofmulti-pagedtransferswhereapplicable.Tocreateapagemappeddevice,createanFDEV,fillinthenecessaryprivatefields,thencallthefollowingfunction:(\MAKE.PMAP.DEVICEDEVICE)[Function]Fillsinfieldsinthedeviceappropriateforpagemappeddevices,andreturnstheupdateddevice.ThefieldsitfillsaretheflagfieldsFDBINABLE,FDBOUTABLE,RESETABLE,RANDOMACCESSP,PAGEMAPPED,BUFFERED(alltrue),andthemethodsBIN,BOUT,PEEKBIN,BLOCKIN,BLOCKOUT,READP,EOFP,GETFILEPTR,BACKFILEPTR,SETFILEPTR,GETEOFPTR,SETEOFPTR,GETNEXTBUFFERandFORCEOUTPUT.APagemappeddeviceisrequiredtosupplythefollowingmethods(inadditiontothoserequiredofalldevicesandnotfilledinby\MAKE.PMAP.DEVICE):(READPAGESSTREAMFIRSTPAGE#BUFFERS)[Devicemethod]CausespagesofSTREAMtobereadintoBUFFERS.ThefirstpagereadisFIRSTPAGE#(zeroforthefirstpageofthefile).BUFFERSiseitherasinglepage-sizedbuffer(aVMEMPAGEP),inwhichcase<00>J<EFBFBD><4A>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<12>hsp<01>Jj<4A>hs<68><10><>br<07>_<01><17><08><1D><01>h<04>#<02>%W<08>+o<01>-<07>2<EFBFBD><32>3 <03>6<08>;<3B><07>@<40><08>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`7<06>*<05>*<06> <02> <20><> <20><>`7t<37>`7 <0C>+<2B><>`7r<37>`7<>+<2B><02>.{<06>3<EFBFBD><06>8|<02>:<3A><05>><3E><02>A,
<EFBFBD>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>`7<><10><>^d<07><15><00><16><02>j<05>i <09>#<23><03>&w<>&w<>^dx<64>^d<05>+E<>^dr<64>^d<01>,y<06>1<08>6%<25>^d<><10><>[<5B><01>@<02>}<03>I<01><18><><18><>[<5B>x<EFBFBD>[<5B><06><1E><>[<5B>r<EFBFBD>[<5B><>$<00> <20><> <20><>[<5B>t<EFBFBD>[<5B><03>$D<>[<5B>r<EFBFBD>[<5B><00>%<00>%<00>[<5B>t<EFBFBD>[<5B> <0C>/<2F><>[<5B>r<EFBFBD>[<5B><>0O<06>4<EFBFBD><34>4<EFBFBD><34>[<5B>t<EFBFBD>[<5B><00>5<EFBFBD><35>[<5B>r<EFBFBD>[<5B><>6<01>7<EFBFBD><07><<3C><04>?V<01>@<40><>@<40><>[<5B>x<EFBFBD>[<5B><05>Ec<45>[<5B>r<EFBFBD>[<5B><>E<EFBFBD><01>G<02>IW<01>J<EFBFBD><4A>J<EFBFBD><4A>[<5B><><10><>Y<EFBFBD><02>%<01><14><04>X<><17><03><1B><><1B><>Y<EFBFBD>x<EFBFBD>Y<EFBFBD><05> }<7D>Y<EFBFBD>r<EFBFBD>Y<EFBFBD><59> <20><01>"*<01>#<23><02>&4<01>'<27><04>*h<>*h<>Y<EFBFBD>t<EFBFBD>Y<EFBFBD> <0C>5S<35>Y<EFBFBD>r<EFBFBD>Y<EFBFBD><59>5<EFBFBD><05>: <03><<3C><07>BV<02>D<EFBFBD><01>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>Y<EFBFBD><59><10><>W<EFBFBD><06><14><08><1A><07> a<> a<>W<EFBFBD>t<EFBFBD>W<EFBFBD>
<EFBFBD>)<29><>W<EFBFBD>r<EFBFBD>W<EFBFBD><57>)<29><06>.<2E><02>04 <09>6<EFBFBD><36>6<EFBFBD><07><<3C><01>>%<25>>%<25>W<EFBFBD>x<EFBFBD>W<EFBFBD> <09>F<15>W<EFBFBD>r<EFBFBD>W<EFBFBD><57>Fr<01>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>W<EFBFBD><57><10><>Vt <0C>|<7C>Vr<>V<07><1B><05> <03>"<22><05>&<26><>&<26><>Vt<>V<02>)<14>Vr<>V<07>)l <0B>1<14>V<07> <09><>R<EFBFBD>t
<EFBFBD><16><><16><>R<EFBFBD>x<EFBFBD>R<EFBFBD><05>[<5B>R<EFBFBD>t<EFBFBD>R<EFBFBD><52>2<>2<>R<EFBFBD>x<EFBFBD>R<EFBFBD><05> <20><>R<EFBFBD>t<EFBFBD>R<EFBFBD><00>!<21><>R<EFBFBD>r<EFBFBD>R<EFBFBD><52>@<40><06>E<EFBFBD><06>Jl<4A>R<EFBFBD>t<EFBFBD>R<EFBFBD><52>Ob<4F>R<EFBFBD><52><10><>O<EFBFBD>r<07><16><02>y<0E>"<22><08>)<07>.<2E><03>2<EFBFBD><32>2<EFBFBD><32>O<EFBFBD>x<EFBFBD>O<EFBFBD><05>7I<37>O<EFBFBD>r<EFBFBD>O<EFBFBD><00>8Y<04><<3C><01>>3<02>@<40><06>E<EFBFBD><04>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>O<EFBFBD><4F><10><>M<EFBFBD>x<05>_<>M<EFBFBD>r<EFBFBD>M<EFBFBD><01><16><><16><>M<EFBFBD>t<EFBFBD>M<EFBFBD><06>z<>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D><1C><05> 5<01>!x <0B>'<27><04>+<2B><02>.5<EFBFBD>.5<EFBFBD>M<EFBFBD>t<EFBFBD>M<EFBFBD><06>4<16>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D>4s<04>7y<01>8<EFBFBD> <09>><3E><>?B<03>B2<01>Cu<03>F<EFBFBD><01>H#<03>J<EFBFBD><4A>J<EFBFBD><4A>M<EFBFBD><4D><10><>L<08>* <0B><1E><06>#S<02>%<25><04>)i<06>-<2D><04>1v<31>1<EFBFBD><02>4<EFBFBD><07>:W<01>;<3B><02>>Q<03>A6<01>B<EFBFBD> <09>J<EFBFBD><4A>J<EFBFBD><4A>L<03><10><>J9<07><15><><15><>J9t<39>J9 <0C> <20><>J9r<39>J9<4A>!%<04>%'<02>'r<05>+<2B><04>.<2E><01>0a<02>2<EFBFBD><03>5<EFBFBD><03>8?<02>:<3A><07>?<3F><>?<3F><>J9t<39>J9<08>GP<47>J9r<39>J9<4A>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>J9<4A><10><>Hf<02><12><03><03><17><>Hf<48><10><>E<EFBFBD><03>{<05>U<01><19><02><1B><08>!<21><04>$<24><>E<EFBFBD><45> <09><>B<02>
<08>N<>N<>Bt<>B <0C>9<>Br<>B<00>\<5C>\<5C>Bt<>B<10>-<2D><>Br<>B<00>.<2E><>.<2E><>Bt<>B
<EFBFBD>:<3A><>Br<>B<00>;<3B><>;<3B><>Bt<>B
<EFBFBD>Gm<EFBFBD>Br<>B<11>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>B<11> <09><>@>t<0E><16><>@>r<>@><3E><02>j<07><1E><02>!5<02>#<23><01>%<25><07>+C<07>0<EFBFBD><03>3<EFBFBD><02>6 <09><<3C><03>?<3F><01>A<EFBFBD><08>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>@><3E> <09><>>kt<02> y<>>kr<6B>>k<00>
R<EFBFBD>
R<EFBFBD>>kt<6B>>k<06>3<>>kr<6B>>k<00>
<EFBFBD>
<EFBFBD>>kt<6B>>k<03>i<>>kr<6B>>k<00>C<>C<>>kt<6B>>k<06>$<24>>kr<6B>>k<><1E><02>!X<>!X<>>kt<6B>>k<07>(<10>>kr<6B>>k<>(<28><05>,<2C><07>2<EFBFBD><32>3/<01>4<EFBFBD><08>:<3A><02>=<07>B<EFBFBD><42>B<EFBFBD><42>>kt<6B>>k<08>J<11>>kr<6B>>k<00>J<EFBFBD><4A>J<EFBFBD><4A>>k<> <09><><<3C><03>
<EFBFBD><08><13><03><00>A<05><1C><05>! <03>#<23><01>%N<08>+D<07>/<2F><02>2Q<32>2Q<32><<3C>t<EFBFBD><<3C> <0C>=<<3C><<3C>r<EFBFBD><<3C><>=<3D><05>B<EFBFBD><01>D<EFBFBD>
<EFBFBD>J<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><<3C><> <09><>:<3A><03>
<04>{<01><11><02>,
<EFBFBD><1A><00><1B>
<EFBFBD>"v<01>#<23><00>$<24><04>'<27><>:<3A><> <09><>69v <09>:<06><18><>69r<39>69<36><05>69<36> <09><>2<EFBFBD> <09><11><06><16><02>%<00>A <09> b<03>#<23><01>%+<05>*:<05>.7<07>3<EFBFBD><05>8@<03>:<3A><06>?<3F><02>Ak<03>D`<01>E<EFBFBD><04>I7<01>J<EFBFBD><4A>J<EFBFBD><4A>2<EFBFBD><32> <09><>0<EFBFBD><05>L<><02><05><16><07>N<06>"<03>%<03>(c<01>*]<04>.<03>1I<01>3-<04>6<EFBFBD><01>8<EFBFBD><05>=<04>@<40><0E>J<EFBFBD><4A>J<EFBFBD><4A>0<EFBFBD><30> <09><>.<2E> <09><11><08><17><05>a<02><1E><0F>'<27><01>)<29><00>*<2A><07>0b<06>5<01>6<EFBFBD><03>9<EFBFBD><01>;B<07>A|<02>C<EFBFBD><03>F*<06>J<EFBFBD><4A>J<EFBFBD><4A>.<2E><> <09><>-3<02> <05><06>^<5E><15><01>|<07><1C><00><1D><05>!<21><02>$Z<03>'<27><06>+<2B><04>/<2F><01>1B<00>2Q<03>4<EFBFBD><07>:<01>;<3B><00><<3C><04>@<07>Eg<02>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>-3<> <09><>+i<01> t<03><0E><03>]<05><15><01>x<03><1A><08> #<02>"j<01>#<23>
<EFBFBD>+m<08>0<EFBFBD><04>4<EFBFBD>
<EFBFBD>;<13>+i<> <09><>'<27><01> <05><00>? <09>H<06><1D><05>!<21><01>#<23><>#<23><>'<27>t<EFBFBD>'<27><03>')<29>'<27>r<EFBFBD>'<27><00>(<03>*'<01>+<2B><02>./<08>4><06>8<EFBFBD><06><<3C><03>@<03>B<EFBFBD><02>D<EFBFBD><08>J<EFBFBD><4A>J<EFBFBD><4A>'<27><> <09><>&%<08>b<>&%<25> <09><>"<22>t<11><19><><19><>"<22>x<EFBFBD>"<22><05>X<>"<22>t<EFBFBD>"<22><00>/<2F>"<22>r<EFBFBD>"<22><>DL <09>Jl<4A>"<22>t<EFBFBD>"<22><>Ob<4F>"<22><><10><><1F>r<04><13><01>5<05><18><01>v<02><1C><05> <20>
<EFBFBD>(A<02>*n <09>2j<07>7x<02>:<06>><3E><02>A<06>FV<06>J<EFBFBD><4A>K<19>K<19><1F><><10><><1D><02>L<05><16><01><04><1A><02><1C><02>(<03>!<21><05>%Z<>%Z<><1D>t<EFBFBD><1D><08>,<2C><><1D>r<EFBFBD><1D><00>-<2D><>-<2D><><1D>t<EFBFBD><1D> <09>6<12><1D>r<EFBFBD><1D><00>6<EFBFBD><36>6<EFBFBD><36><1D>t<EFBFBD><1D><08>>d<><1D>r<EFBFBD><1D><00>?&<26>?&<26><1D>t<EFBFBD><1D> <0C>J<11><1D>r<EFBFBD><1D><00>J<EFBFBD><4A>J<EFBFBD><4A><1D><><10><>*t <09><18><>*r<>*<00>;<3B>;<3B>*t<>*<07> <20><>*r<>*<2A>!<21><03>$<24><05>(<28><02>+<2B><02>.<2E><06>4<EFBFBD><34>4<EFBFBD><34>*t<>*<02>7%<25>*r<>*<00>8j<38>8j<38>*t<>*<03>;<3B><>*r<>*<00>= <0B>= <0B>*t<>*<06>B<EFBFBD><42>*r<>*<00>D0<44>D0<44>*t<>*<06>J<11>*r<>*<00>J<EFBFBD><4A>J<EFBFBD><4A>*<2A><10><>Wt<07>I<>Wr<57>W<00><18><><18><>Wt<57>W<04><17>Wr<57>W<00><1E><><1E><>Wt<57>W<03>"<0E>Wr<57>W<00>#<23><>#<23><>Wt<57>W <09>,<0F>Wr<57>W<00>-<2D><>-<2D><>Wt<57>W
<EFBFBD>6<EFBFBD><EFBFBD>Wr<57>W<00>8<EFBFBD><38>8<EFBFBD><38>Wt<57>W <09>@<40><>Wr<57>W<00>B<EFBFBD><42>B<EFBFBD><42>Wt<57>W<08>J<12>Wr<57>W<00>J<EFBFBD><4A>J<EFBFBD><4A>W<><10><><18>t<08> <20><18>r<EFBFBD><18><00><18><><18><><18>t<EFBFBD><18> <0C>#<23><><18>r<EFBFBD><18><>$<02>&<26><>&<26><><18>t<EFBFBD><18>
<EFBFBD>/<2F><><18>r<EFBFBD><18><00>06<30><18><> <09><>
<00> W <09>C<05>[<01><18><07><1D><01><1F><05>#<23><02>%<25><08>+<2B><06>1@<02>3=<07>8|<01>:<04>=s<07>B<EFBFBD><01>Dd<02>F)<06>J<EFBFBD><4A>J<EFBFBD><4A>
<EFBFBD> <09><>@<02> }<02><0E><05>%<01><13><01>s<>s<>@t<>@<10>#<23><>@r<>@<01>$<24><>@<40> <09><><0F>t <09>1<>1<><0F>x<EFBFBD><0F><05><17><><0F>t<EFBFBD><0F><><18><><18><><0F>x<EFBFBD><0F> <09> [<5B><0F>t<EFBFBD><0F><>!2<>!2<><0F>x<EFBFBD><0F><06>&l<><0F>t<EFBFBD><0F><00>'C<><0F>r<EFBFBD><0F><>@<40><06>E<EFBFBD><06>Jl<4A><0F>t<EFBFBD><0F><>Ob<4F><0F><><10><> <0C>r<05><04><18><01>5<>5<> <0C>x<EFBFBD> <0C><05><03> <0C>r<EFBFBD> <0C><>`<01> <20><01>"<22><03>%<25><03>(M<>(M<> <0C>x<EFBFBD> <0C><06>-<2D><> <0C>r<EFBFBD> <0C><00>.;<3B>.<2E><02>1G<04>3<EFBFBD><03>7<03>:<01>;G<>;G<> <0C>x<EFBFBD> <0C> <09>B<EFBFBD><42> <0C>r<EFBFBD> <0C><>C*<04>F|<02>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A> <0C><><10><> <04>M<03>x<01><02>[<05>x<><1D><><1D><> x<> <06>#<1E> r<> <0F>#<23><01>$<24><05>(<28><00>)<29><05>-<2D> <09>4<05>8)<01>9<EFBFBD><39>9<EFBFBD><39> t<> <08>AA<41> r<> <01>B~<01>D<04>H<03>J<EFBFBD><4A>J<EFBFBD><4A>  <09>
<EFBFBD>q?<3F>`<60>
16exactlyonepageisread,oritisalistofsuchbuffers.READPAGESreturnsthetotalnumberofbytesread.Ifthelastpagereadisnotafullpage,READPAGESshouldzeroouttherestofitsbuffer.READPAGEScanassumethatthebuffersarepage-aligned,althoughtheyneednotbeconsecutive.(WRITEPAGESSTREAMFIRSTPAGE#BUFFERS)[Devicemethod]WritesdatafromBUFFERSouttoSTREAM.ThefirstpagewrittenisFIRSTPAGE#.BUFFERSisaswithREADPAGES.NeitherREADPAGESnorWRITEPAGESaffectsSTREAM'sfilepointerorendoffile;thosearemanagedbyhigher-levelpagemappedroutines.WRITEPAGESmight,however,wanttolookatSTREAM'sEPAGEandEOFFSETfieldsifitneedstotakeanyspecialactionaroundtheendofthefile.Itispossible,fornoparticularlygoodreason,forREADPAGEStogetcalledforapagebeyondtheendoffile;infact,thisstandardlyhappenswhenwritinganewfile.TheREADPAGESmethodinthiscaseshouldjustclearthebufferandreturnzero.(TRUNCATEFILESTREAMPAGE#OFFSET)[Devicemethod]TruncatesSTREAMsothatitsendoffileisPAGE#,OFFSET,whichshouldbedefaultedtoSTREAM'sEPAGEandEOFFSET.Canbeusedtoeithershortenorlengthenafile;iflengthening,thefileshouldbepaddedwithnulls.Usedby\PAGED.SETEOFPTRand\PAGED.FORCEOUTPUT.Asofthiswritingtherearestillbugsinthiscodeincertainfunnycases,suchaswhenyouSETFILEPTRbeyondeofandthenBOUT.Thefollowingfieldsofastreamaremeaningfulforapagemappeddevice.Thegenericpagemappedcodesmaintainthemasoperationsonthefileareperformed,buttheyshouldallbeinitializedappropriatelybythedevice'sOPENFILEmethod:CPAGEForpagemappedstreams,thecurrentpagepositioninthestream.TogetherwithCOFFSET,thisconstitutesthestream'sfilepointer.Thedevice'sOPENFILEmethodshouldsetCPAGEandCOFFSETtozero,exceptforfilesopenedwithaccessAPPEND,inwhichcasetheyshouldbesettotheendoffile.EPAGE,EOFFSETForpagemappedfiles,thepageandbyteoffsetoftheendoffile.Notethatthisisthelogicalendofthefile;itneedhavenothingtodowiththephysicalendoffile,exceptthatwhenafileisclosed,thedeviceshouldseetoitthatitslogicalandphysicalEOFsarethesame(normallyseentobytheTRUNCATEFILEinsideof\CLEARMAP,below).Infact,asatypicalfileisbeingwritten,EPAGEtendstostayseveralpagesaheadofthephysicalendoffilebyvirtueofthefactthatpagesarebeingbufferedbeforebeingwrittenout.BUFFSForpagemappedstreams,apointertothestream'sBUFFERchain.InitiallyNIL(nobuffersallocated).Thedeviceusuallyhasnodirectinterestinthisfield.MAXBUFFERSForpagemappedstreams,themaximumnumberofbuffersdesiredinthestream'sBUFFSchain.IfthecodeneedsanotherbufferandtherearealreadyMAXBUFFERSbuffers,itwilltrytorecycletheleastrecentlyreferencedbuffer.Defaultsto\STREAM.DEFAULT.MAXBUFFERS.TheusercanchangethisfieldforanopenstreambycallingSETFILEINFOwithattributeBUFFERS.<00>J<EFBFBD><4A> <0F>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68><10><>br<06>%<02><17><03>
<01>p<04><1F><01>!<21><01>"<22><01>$P<00>%u<03>'<27><01>)^<03>,<2C><07>1<EFBFBD><31>2
<EFBFBD>2
<EFBFBD>bt<>b<08>9<EFBFBD><39>br<>b<01>:<06>><3E><02>A<04>D:<05>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`.<04>(<04><17><>&<01><19><02><03><1E><03>!<21><03>$<24><01>&j<02>(<28><00>*<03>,<2C><04>0?<3F>0?<3F>`.t<>`.<08>7<EFBFBD><37>`.r<>`.<2E>8X<05><<3C><03>?<3F><02>BQ<02>D<EFBFBD><03>GY<01>I<02>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E><10><>^[<06>)<29><15><><15><>^[t<>^[<08>R<>^[r<>^[<5B><1D><02> <20><05>%e<03>(F<02>*<2A><06>/~<02>1<EFBFBD> <0C>:[<07>@&<03>CI<03>F<EFBFBD><02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>^[<5B><10><>\<5C> <0B><08><0E>\<5C><> <09><>Yt
<EFBFBD><08><08>Yx<>Y<05><18><>Yt<>Y<17><19><><19><>Yx<>Y <09>!2<>Yt<>Y<17>" <09>" <09>Yx<>Y<06>'C<>Yt<>Y<00>(<1A>Yr<>Y<17>@<40><06>E<EFBFBD><06>Jl<4A>Yt<>Y<17>Ob<4F>Y<17><10><>V*r<05><14><03><17><03>,<2C>,<2C>V*x<>V*<06> f<>V*r<>V*<2A> <20><02>#?<01>$<24><>$<24><>V*x<>V*<05>)<29><>V*r<>V*<00>*w<>*<2A><02>-<2D><04>0y<03>3<EFBFBD><06>8N<01>9<EFBFBD><39>9<EFBFBD><39>V*x<>V* <09>A/<2F>V*r<>V*<00>A<EFBFBD><41>Bp<42>Bp<42>V*x<>V*<06>G<EFBFBD><47>V*r<>V*<2A>H<01>I@<01>J<EFBFBD><4A>J<EFBFBD><4A>V*<2A><10><>T`<03>|<7C>|<7C>T`t<>T`<08> <0B>T`r<>T`<00>h<>T`<60> <09><>P<EFBFBD><06><01><01>P<EFBFBD>t<EFBFBD>P<EFBFBD><08><16><>P<EFBFBD>r<EFBFBD>P<EFBFBD><50><02><19><><19><>P<EFBFBD>t<EFBFBD>P<EFBFBD> <09>"<07>P<EFBFBD>r<EFBFBD>P<EFBFBD><50>"<22><06>&<26><>&<26><>P<EFBFBD>x<EFBFBD>P<EFBFBD><05>+<2B><>P<EFBFBD>r<EFBFBD>P<EFBFBD><01>-<03>/w<06>4<<01>6<02>8<EFBFBD><01>:s<04>=U<04>@<40><02>CG<06>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>P<EFBFBD><50> <09><>O <0B><11> <09><19><08>U<><1F><><1F><>Ot<>O <09>(R<>Or<>O<13>(<28><05>-G<07>31<03>6<EFBFBD><01>8]<03>;<3B><01>=.<2E>=.<2E>Ox<>O<05>A<EFBFBD><41>Or<>O<01>Co<43>Co<43>Ot<>O<04>G<EFBFBD><47>Or<>O<13>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>O<13> <09><>M@t<06><0F><>M@r<>M@<40>~<05>S<01><15><01>P<04>S<01>$<03> ?<02>#<06>'<27><05>+<2B><05>0<EFBFBD><02>36<02>6<01>7<EFBFBD><02>:n<04>=P<>=<3D><01>?<3F><01>A#<08>F<EFBFBD><02>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>M@<40> <09><>Km <0B>]<03><14><06><19><02>0<>0<>Kmt<6D>Km<08>#<23><>Kmr<6D>Km<4B>$m<01>&B<02>(<28><05>,<2C><02>/3<00>0<EFBFBD><03>3<EFBFBD><05>9<02>;<3B><02>>f<01>@F<04>CO<01>E$<04>HO<03>J<EFBFBD><4A>J<EFBFBD><4A>Km<4B> <09><>I<EFBFBD> <09>s<06><15><03>><06><1D><00><1E><02>!<21><04>$<1A>$v<02>'"<22>'"<22>I<EFBFBD>t<EFBFBD>I<EFBFBD><08>.<2E><>I<EFBFBD>r<EFBFBD>I<EFBFBD><49>/ <05>3<EFBFBD><01>5m<03>7<EFBFBD><03>:<3A><05>><3E><03>Ai<04>D<EFBFBD><02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>I<EFBFBD><49> <09><>G<EFBFBD><02> }<05>|<04>U<>G<EFBFBD><47> <09><>DVt <0C><15><><15><>DVx<56>DV<05><1A><>DVt<56>DV<44>[<5B>[<5B>DVx<56>DV<04><1F><>DVt<56>DV<44> Z<> Z<>DVx<56>DV<05>$<24><>DVt<56>DV<00>%<25><>DVr<56>DV<44>@<40><06>E<EFBFBD><06>Jl<4A>DVt<56>DV<44>Ob<4F>DV<44><10><>Air<08><16><><16><>Aix<69>Ai<05><1B><>Air<69>Ai<41><1B><01>}<03> <02>!<21><02>$]<01>%<25><03>()<01>)k<>)k<>Aix<69>Ai<04>-<2D><>Air<69>Ai<00>.G<>.G<>Aix<69>Ai<05>2<EFBFBD><32>Air<69>Ai<00>3a<04>7B<05>;<3B><01>=W<08>C=<01>D<EFBFBD><44>D<EFBFBD><44>Aix<69>Ai<05>I<EFBFBD><49>Air<69>Ai<01>J<EFBFBD><4A>J<EFBFBD><4A>Ai<41><10><>?<3F>t<04><14><>?<3F>r<EFBFBD>?<3F><>D<02><17><><17><>?<3F>t<EFBFBD>?<3F><06><1D><>?<3F>r<EFBFBD>?<3F><00><1E><>0<02>"<01>$<03>':<01>(<28><05>,<2C><06>1<EFBFBD><01>3g<07>9<00>:*<04>=<01>>a <0B>F.<02>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>?<3F><><10><>=<3D><05><14><01><16><05>b<03>Q<05>!<21><>"3<03>%<25><01>'m<>'m<>=<3D>t<EFBFBD>=<3D><0F>4<EFBFBD><34>=<3D>r<EFBFBD>=<3D><>59<02>7<EFBFBD><37>7<EFBFBD><37>=<3D>t<EFBFBD>=<3D><11>F<EFBFBD><46>=<3D>r<EFBFBD>=<3D><00>G<EFBFBD><47>G<EFBFBD><47>G<EFBFBD><47>=<3D>s<EFBFBD>=<3D><01>Is<01>J<EFBFBD><4A>J<EFBFBD><4A>=<3D><><10><><6<03><12><06>R<04><02><1A><04><1C><03><1F><01> <20><03>"<22><03>%s<01>&<26><06>*O<04>-v<05>0p<03>2<EFBFBD><01>4=<03>7'<02>9F <09>@w<05>DX<02>F1<02>HP<03>J<EFBFBD><4A>J<EFBFBD><4A><6<><10><>:|<04><07>:|r<>:|<7C>
<EFBFBD>:|<7C> <09><>7 <02> <0C><08><12><05>r<01>$<00>G<05><1D><02><1F> <09>'+<02>)`<00>*<2A> <09>2<EFBFBD><06>7<18>7<EFBFBD><02>:f<06>?$ <09>G'<04>J<EFBFBD><4A>J<EFBFBD><4A>7 <0B> <09><>5A<07><0F><03><12><01><14> <09><01><02>L<03>!<21><02>#<23> <09>*<2A><02>-3<03>0'<05>4<EFBFBD><02>6X<01>8.
<EFBFBD>>` <0C>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>5A<35> <09><>3w<07><0E><><0E><>3wt<77>3w<07><15><>3wr<77>3w<33><15><06><1A><>3w<33> <09><>/<2F>t<04>'<27>/<2F>r<EFBFBD>/<2F><>/<02><19> <09>"1<07>'<27><02>*(<06>/<03>2<EFBFBD><07>7<EFBFBD><01>9<EFBFBD><02><?<06>A+<2B>A<EFBFBD><07>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>/<2F><>/<2F>.*t<06><10>.*r<>.*<00><1D><03> <20>
<EFBFBD>'8<02>)<29><07>.<2E><03>15<07>6J<36>6<EFBFBD><02>9<EFBFBD><07>><3E><>><3E><>.*t<>.*<07>Eh<45>.*r<>.*<2A>E<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>.*<2A>/<2F>,W<05><1B><02><1D><><1D><>,Wt<57>,W<04>!<21><>,Wr<57>,W<>"=<02>$<24><>$<24><>,Wt<57>,W<06>*<2A><>,Wr<57>,W<>+1<01>,<2C><04>0<05>4G<02>6o<04>9F<05>>
<03>A<05>E<07>E<07>,Wt<57>,W<05>J<11>,Wr<57>,W<00>J<EFBFBD><4A>J<EFBFBD><4A>,W<>/<2F>*<2A><01><18><04><1C><03>L<03>"-<05>&w<01>(:<02>*)<01>+<2B><02>-<2D><02>0c<01>1<EFBFBD><04>4-<2D>*<2A><> <09><>'t<05><0F><06><15><>'r<>'<13>/<02><19> <09>!<21><05>$<24><02>'<03>*A<02>,<2C><03>/<2F><05>3|<01>5<02>7\<02>9<EFBFBD><01>;<3B><04>>7<>><3E><03>A<EFBFBD><03>D<EFBFBD><03>G/<01>H<48>H<48>'<13>'<02>J<EFBFBD><4A>J<EFBFBD><4A>'<13>/<2F>%@u<06><1A><>%@r<>%@<40>r<02><01><1F><02>"<04>$<24><01>&<03>)b<03>,<2C><06>1<EFBFBD><01>3/<01>5"<03>8(<02>:t<07>?<3F><02>BN<01>C<EFBFBD><04>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>%@<40>/<2F>#c<03><19><03><1D><00><1E><03> <20><01>"7<06>&<26><02>(<28><05>-<05>1s<02>3<EFBFBD><01>5E<01>6<EFBFBD><03>98<02>:<3A><06>?7<02>A<EFBFBD><07>G<03>J<EFBFBD><4A>J<EFBFBD><4A>#c<>/<2F>!<21><02>d<02><1B><03><08>%)<03>($<01>)<29><01>+<2B><02>-<2D><>-<2D><>!<21>t<EFBFBD>!<21> <0B>7<EFBFBD><37>!<21>r<EFBFBD>!<21><>8M<05><-<01>=<3D><>=<3D><>!<21>t<EFBFBD>!<21><08>EV<45>!<21>r<EFBFBD>!<21><00>F<06>J<EFBFBD><4A>K<19>K<19>!<21><>/<2F><1F><01><18><04><1B><01>J<00>R<06>"<22><03>$<24><01>&+<04>)<29><07>.<2E><>.<2E><><1F>t<EFBFBD><1F><04>2<EFBFBD><32><1F>r<EFBFBD><1F><>3M<04>6<EFBFBD><01>8^<03>;<06>?u<04>C<04>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A><1F><>/<2F><1D><07><1C><02>A<01>!<03>#t<01>%y<05>)w<01>+9<02>-<2D><03>0W<03>3-<04>7<02>9]<04>=/<07>B<EFBFBD><05>G&<04>J<EFBFBD><4A>J<EFBFBD><4A><1D><>/<2F>)<06><1B><03><1D><>)<29> <09><><18>t<04>'<27><18>r<EFBFBD><18><>/<02><19> <09>!<21><07>'<00>(B<06>-<01>.<2E><02>1<07>6H<36>6H<36><18>t<EFBFBD><18><05>;R<><18>r<EFBFBD><18><>;<3B><05>?<3F><>@V<08>Ek<45>Ek<45><18>t<EFBFBD><18><02>G<EFBFBD><47><18>r<EFBFBD><18><>Hp<02>J<EFBFBD><4A>J<EFBFBD><4A><18><>/<2F><16><06><1B>
<EFBFBD>"<15>"m<02>%<05>)*<06>-<2D><02>/<2F><01>1<EFBFBD><05>5{<07>:)<01>;<3B><03>><05>A <20><16><> <09><>tt <09>Z<>tr<74>t<>/<02><19> <09>"<07>'<27><02>)<29><06>0<EFBFBD><05>5<EFBFBD><01>7<EFBFBD><06><~<06>A`<01>C*<02>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>t<>/<2F><11>t<04>b<><11>r<EFBFBD><11><><1B><05><1F><> s<01>!<21><02>$R<03>'<27><04>+t<06>0z<05>4<EFBFBD><02>7[<04>:<3A><02>=4<06>B<03>B<03><11>t<EFBFBD><11> <09>Ji<4A><11>r<EFBFBD><11><>J<EFBFBD><4A>J<EFBFBD><4A><11><>/<2F><0F><07><1C><01>Y<03>!h<02>#<23><01>&
<06>+
<02>-<2D><04>1X<07>6<EFBFBD> <09>><06>C<03>C<EFBFBD><07>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><0F><>/<2F>t<19>-<05>r<><00>.<17>.<2E><02>1<EFBFBD><03>5<02>7<EFBFBD><05><<3C><03>?<3F><04>B<EFBFBD><02>EX<01>G~<03>J<EFBFBD><4A>J<EFBFBD><4A><04>/<2F> 1<05>p<01>><06>!q<>!q<> 1t<31> 1
<EFBFBD>*<2A><> 1r<31> 1<>+<03>-<2D><08>3O<33>3O<33> 1t<31> 1<06>90<39> 1r<31> 1<00>9<EFBFBD><39> 1<>
<EFBFBD>q?<3F>`<60>-17MULTIBUFFERHINTFlag.Forpagemappedstreams,isahinttothepagemapcodethatthedevicepreferstotransferdatamorethanonebufferatatime.Ifthisflagistrue,thepagemapcodetriestowriteout(WRITEPAGES)morethanonebufferatatimewhentheopportunityarises.Asimilarimprovementisplanned,butnotimplemented,forreadingmultiplebuffersatatime.Thefollowingfunctionsareofuseforpagemappeddevices:(\PAGED.FORCEOUTPUTSTREAMWAITFORFINISH)[Function]ThisfunctionimplementstheFORCEOUTPUTmethodforpagemappedstreams:itcausesanydirtypagestobewrittenout(usingWRITEPAGES),thencallstheTRUNCATEFILEmethodtosettheendoffile.ThisfunctionisnormallyinstalledastheFORCEOUTPUTmethodbythefunction\MAKE.PMAP.DEVICE.However,thedevicecanoverridethisdefault(bysupplyingitsownfunctioninthatfield),inwhichcaseitmightwanttocallthefunction\PAGED.FORCEOUTPUTexplicitlyaspartofitsmorecomprehensiveFORCEOUTPUTmethod.Thereisanunpleasantnessintheimplementationofpagemappeddevicesthatstemsfromthefactthatoriginallyalldevices(thefewthatexistedinthedistantpast)weremadetosupportthePMAPpackage,ameanswherebyaprogrammercouldgetdirectaccesstothebuffersofafile,muchasonecanwiththePMAPJSYSinTenex.Asaresult,thebuffersusedbypagemappedstreamsaresetupinaspecialmannersothatthegarbagecollectorcantellwhentheusernolongerhasaccesstoaPMAPbuffer.ThePMAPpackageisbeingphasedout.Thisisallexceedinglycrufty,andisoflittleconcerntothedeviceimplementer,exceptforthefactthatitrequiresthatthebuffersbeexplicitlyreleasedwhenastreamisclosed;thebuffersarenotautomaticallycollectedwhenthestreamisdropped.(FORGETPAGESSTREAMFROMPAGETOPAGE)[Function]``Forgets''pagesFROMPAGEthruTOPAGEofSTREAM;i.e.,removesthosepagesfromthesetofpagesbeingcurrentlybuffered,andfreesthebufferstheywereoccupying.IfFROMPAGE=TOPAGE=NIL,forgetsallpages,andreleasesallofSTREAM'sbuffers.(\CLEARMAPSTREAM)[Function]PerformsaFORCEOUTPUT(ifSTREAMisopenforoutput)followedbyaFORGETPAGES.Thisisthestandardactionthatshouldbetakenbyapagemappedstream'sCLOSEFILEmethod.DirectoryEnumerationThissectiondescribeshowdirectoryenumerationworkswhatyouneedtoknowinordertoimplementtheGENERATEFILESdevicemethod,andwhatyouneedtoknowasaprogrammertryingtoenumerateadirectoryviaanythingmoreelaboratethanthefunctionDIRECTORY.Thegeneralideaisthatthedirectoryenumerationcodeisgivenapattern,anditreturnsageneratorthat,eachtimeitispoked,returnsanotherfilenamematchingthepattern.Inaddition,thegeneratorprovidesahandleforgettingfileattributesofeachenumeratedfile.Thissecondhandleisimportantforefficiency:although<00>9<EFBFBD><39> 1<>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<12>hsp<01>Jj<4A>hs<68> <09><>bt<0E><16><>br<>b<01>/<04><><1A><02>\ <09>%><07>*`<01>+<2B><00>,<2C><03>/\<01>0<EFBFBD><02>3<06>8<EFBFBD><03>;<3B><03>><3E><02>@<40><05>D<EFBFBD><06>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>b<01>/<2F>`.<07><03><1E><03>"^<03>%]<02>'<27><05>+<2B><01>-^<00>.d<04>1<EFBFBD><31>2<01>3w<03>5<EFBFBD><03>8<EFBFBD><01>9<EFBFBD><04><<3C><02>?<06>D<EFBFBD><03>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E>/<2F>^d<01><18><04><1C><02><00><1F><>^dt<64>^d <09>'<27><>^dr<64>^d<00>)
<03>,<2C><03>/<2F><02>2<EFBFBD><05>6<EFBFBD><01>8<EFBFBD><00>9<EFBFBD><03>=)<03>@<40><02>Ck
<EFBFBD>J<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>^d<>/<2F>\<5C><06>7<><1B><00>/<06>!<21>
<EFBFBD>*<01>+b<07>0<EFBFBD><02>3j<02>5<EFBFBD> <0B>>g<02>@<40><06>E{<07>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><>/<2F>Z<EFBFBD><06><1B><01><00><04>!<15>Z<EFBFBD><5A> <09><>YD<59> <09><>YD<59> <09><>U<EFBFBD><02> <0C><08>{<08>F<02>l<01><1B><02>><02> M <09>(*<07>,<2C><>U<EFBFBD><55> <09><>Rbt<12><1A><><1A><>Rbx<62>Rb<05><1F><>Rbt<62>Rb<52> e<> e<>Rbx<62>Rb <0C>)<29><>Rbt<62>Rb<00>*<2A><>Rbr<62>Rb<52>DL <09>Jl<4A>Rbt<62>Rb<52>Ob<4F>Rb<52><10><>Our<03><13><07><18> <09> <02>"<<3C>"<<3C>Out<75>Ou
<EFBFBD>+y<>Our<75>Ou<4F>+<2B><05>0<EFBFBD><02>2<EFBFBD> <09>:<3A><07>?<3F><01>A<05>E)<02>G<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A>Ou<4F><10><>M<EFBFBD><04>T<01><15><01><17><06><1C><02><1E><05>#<12>#<12>M<EFBFBD>t<EFBFBD>M<EFBFBD> <09>+x<>M<EFBFBD>r<EFBFBD>M<EFBFBD><01>,<2C><03>/<2F><04>2<EFBFBD><02>5B<35>5B<35>M<EFBFBD>t<EFBFBD>M<EFBFBD> <0B>?V<>M<EFBFBD>r<EFBFBD>M<EFBFBD><4D>?<3F><05>D<EFBFBD><01>F|<02>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>M<EFBFBD><4D><10><>K<EFBFBD><02><01><14><04><16><>K<EFBFBD><4B><10><>H<EFBFBD><03>n<07><1A><01><1C><07>#l<08>)<29><01>,<02>/><3E>/><3E>H<EFBFBD>t<EFBFBD>H<EFBFBD>
<EFBFBD>8{<7B>H<EFBFBD>r<EFBFBD>H<EFBFBD><48>9<EFBFBD><05>?<3F><01>BV<02>Ez<07>J<EFBFBD><4A>J<EFBFBD><4A>H<EFBFBD><48><10><>Gt<10><1E><>Gr<>G<00><1F><> h<07>&<26><02>)&<05>-<02>0!<07>5<EFBFBD><03>8X<06>=<02>?<3F><08>E<EFBFBD><02>G<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>G<18><10><>EE<07><15><01><17><03>c<06>W<01><1F><04>#<23><03>&<26><01>(,<04>,<03>/i<01>1
<03>3<EFBFBD><02>5<EFBFBD><07>;K<>;K<>EEt<45>EE<11>Ji<4A>EEr<45>EE<45>J<EFBFBD><4A>J<EFBFBD><4A>EE<45><10><>Cr <09>D<01><17><03>z<01><02><1D><03>! <0C>*E<>*E<>Crt<72>Cr
<EFBFBD>3<EFBFBD><EFBFBD>Crr<EFBFBD>Cr<EFBFBD>3<EFBFBD><06>8<EFBFBD><38>Cr<43> <09><>?<3F><04><01><0F><01><11>
<EFBFBD>0<01><02><1F>
<EFBFBD>)z<01>+V <09>3<EFBFBD><06>8m<03>;\<04>?I<03>B<EFBFBD><02>ET<03>H"<03>J<EFBFBD><4A>J<EFBFBD><4A>?<3F><> <09><>>. <09><02><06><16><03><19><02>w<03>P<06>#<23><01>%<25><02>(<06>,<2C><04>0
<03>3g<03>73<01>8<EFBFBD><06>><02>@m<>@m<>>.t<>>.<03>C<EFBFBD><43>>.r<>>.<2E>D[<07>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>>.<2E> <09><><[<04><06><13><00><14> <09>V<04> <02>",<05>%<25><05>)<29><01>+m<02>-<2D><06>2B<01>3<EFBFBD><00>4<EFBFBD><04>7<EFBFBD><03>;D<01><<3C><02>?c<02>A<EFBFBD><03>D<EFBFBD><02>G
<EFBFBD>G
<EFBFBD><[t<><[<03>Ji<4A><[r<><[<5B>J<EFBFBD><4A>J<EFBFBD><4A><[<5B> <09><>:<3A><03>
z<01><0E><05>Q<><13><01><15><00><16><06><1A><02><1C><06>!6<03>$D<01>& <09>-<2D><06>2<EFBFBD><02>4<EFBFBD><02>6<EFBFBD><01>8<EFBFBD><01>:4<00>;2<06>?}<05>DY<01>E<EFBFBD><03>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>:<3A><> <09><>8<EFBFBD><06><0E><08>a<02><16><03>
<03><1C><02><1E><03>!<21><01>#<23><05>'<27><02>*#<05>.<01>/<2F><00>0<EFBFBD><30>0<EFBFBD><30>8<EFBFBD>t<EFBFBD>8<EFBFBD><03>4 <0B>8<EFBFBD>r<EFBFBD>8<EFBFBD><38>4s<06>8<EFBFBD><38>9B<39>9B<39>8<EFBFBD>s<EFBFBD>8<EFBFBD><02>;s<03>><3E><06>C<01>D(<04>G<05>J<EFBFBD><4A>J<EFBFBD><4A>8<EFBFBD><38> <09><>6<EFBFBD><03> <0B><>6<EFBFBD>r<EFBFBD>6<EFBFBD><36> <0B><>6<EFBFBD><36> <09><>3z<03>
<01><0E><02>u
<EFBFBD><17><06>F<02><01> r<01>"0<05>%b<06>*<2A><01>,B<02>.<2E><05>2<EFBFBD> <0B>;R<05>?<3F><02>A<EFBFBD><02>DJ<03>F<EFBFBD><03>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>3z<33> <09><>1<EFBFBD><07>P<03>/<02><14><06>b<01>d <09>!W<07>&<26><03>*x<00>+<2B><05>05<01>1<EFBFBD><06>6h<02>8<EFBFBD><06>=<3D><02>@<02>B<EFBFBD> <0C>J<EFBFBD><4A>J<EFBFBD><4A>1<EFBFBD><31> <09><>/<2F><08>|<03><02>3<05>t<01><1A><07>
<EFBFBD>/<2F><> <09><>,ut <0B><14><><14><>,ux<75>,u<05><19><>,ut<75>,u<><1A><><1A><>,ux<75>,u<07>!><05>%<25><>,ut<75>,u<00>&<26><>,ur<75>,u<>DL <09>Jl<4A>,ut<75>,u<>Ob<4F>,u<><10><>)<29>r
<EFBFBD><16><04><1A><><1A><>)<29>x<EFBFBD>)<29><07>!><3E>)<29>r<EFBFBD>)<29><>!<21><03>$<24><>$<24><>)<29>x<EFBFBD>)<29><05>)<29><>)<29>r<EFBFBD>)<29><>*<01>+<2B><>+<2B><>)<29>x<EFBFBD>)<29><05>0<EFBFBD><30>)<29>r<EFBFBD>)<29><00>1<EFBFBD><04>4d<06>9<EFBFBD><04>=<3D><04>Ad<03>D<EFBFBD><02>GG<02>I6<01>J<EFBFBD><4A>J<EFBFBD><4A>)<29><><10><>'<27><04><14><04>p<08>o<08>$<24><02>'c<04>*<2A><02>-_<06>26<03>5l<03>8<EFBFBD> <09>?<3F><>@<40><01>B=<3D>B=<3D>'<27>x<EFBFBD>'<27><07>H<EFBFBD><48>'<27>r<EFBFBD>'<27><>I <00>J<EFBFBD><4A>J<EFBFBD><4A>'<27><><10><>%<25>x<05>3<>%<25>r<EFBFBD>%<25><><15><00>C<>C<>%<25>t<EFBFBD>%<25><02><19><>%<25>r<EFBFBD>%<25><00>x<06><1E><02> <20><05>$<24><02>' <07>+<2B><02>-<2D><01>/2<>/2<>%<25>x<EFBFBD>%<25><05>4<00>%<25>r<EFBFBD>%<25><01>54<07>9<EFBFBD><39>%<25><> <09><>"zt <09>1<>1<>"zx<7A>"z<05><17><>"zt<7A>"z<00><18><>"zr<7A>"z<>DL <09>Jl<4A>"zt<7A>"z<>Ob<4F>"z<><10><><1F>r<07>\<00>n<>n<><1F>t<EFBFBD><1F>
<EFBFBD> <20><><1F>r<EFBFBD><1F><>!<02>"<22><>"<22><><1F>x<EFBFBD><1F><05>'<27><><1F>r<EFBFBD><1F><>(<01>)g<03>,<2C><02>.<2E><06>3<EFBFBD><07>97<01>;<00><,<2C><,<2C><1F>t<EFBFBD><1F>
<EFBFBD>Ei<EFBFBD><1F>r<EFBFBD><1F><00>F-<2D>F<EFBFBD><03>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A><1F><><10><><1D><02><12><07>,<05><03><1E><05>"<22><01>$<24><04>(O<01>*<00>+ <09>2<EFBFBD><07>8<14>8<14><1D>t<EFBFBD><1D><08>?<3F><><1D>r<EFBFBD><1D><>?<3F><06>D<EFBFBD><44><1D><> <09><>%v<08>
<EFBFBD>9<>%r<>%<25>?<3F>%<25> <09><>}<03> <0C><06>u<08>A<02>,<08><1F>
<EFBFBD>'<27> <09>/<2F><02>2<EFBFBD><03>5<EFBFBD><01>7\<03>;<01><<3C><04>@2<01>A<EFBFBD><08>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>}<7D> <09><><13>t <0C><14><><13>r<EFBFBD><13><><15><05><19><06><1F><02>"_<03>%<25><02>(<28><03>,F<01>.<03>2<01>3<EFBFBD><00>5, <09>=3<05>A[<01>C1<08>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A><13><> <09><><11><08><0F><02><11><07>!<03><1A><08> E<03>#<<02>%m<07>*<2A><>*<2A><><11>t<EFBFBD><11><08>2C<32><11>r<EFBFBD><11><00>2<EFBFBD><32><11><> <09><>f<02> <0C><06>K<03><01>]<03><02>8<08><1F>
<EFBFBD>'<27><03>*<2A><01>,<04>/<2F><00>0<EFBFBD><07>5<EFBFBD><02>8<01>9F<06>=<3D><00>><3E><08>D<EFBFBD><04>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>f<> <09><> <0C><03> <0C><01>&<01>n<05><13><06>[<06>?<03><1F><03>#<07>(<28><02>+0<07>0<1F>0<EFBFBD><01>2-<08>7<EFBFBD><02>:<08>?<3F><07>Ed<00>Fk<05>J<EFBFBD><4A>J<EFBFBD><4A> <0C><> <09><>
<EFBFBD><02> )<06><10><03> <09><01><1A><03><1D> <09>%k<04>(!<21>(<28><03>+<2B><05>04<05>4<EFBFBD><01>6<08><e<02>><3E>
<EFBFBD>E9<07>J<EFBFBD><4A>J<EFBFBD><4A>
<EFBFBD><EFBFBD> <09>
<EFBFBD>q?<3F>`<60><05>18onecouldjusttakethefilenamegivenbytheenumeratorandpassittoGETFILEINFO,thedevice,inthecourseofenumeration,usuallyhasitsfingersonthefilecloselyenoughthatitneednotperformtheseconddirectorylookupthataGETFILEINFOoutofthebluewouldrequire.Thecallerofthedirectoryenumerationcodespecifiesaheadoftimewhich,ifany,attributeswillberequired(anecessityformostfileserverimplementations).Informationfordeviceimplementors.AfilegeneratorisanobjectrepresentedasalistdescribedbytherecordFILEGENOBJ,exportedfromFILEIO:(RECORDFILEGENOBJ(NEXTFILEFNFILEINFOFN.GENFILESTATE))NEXTFILEFNandFILEINFOFNarefunctionsofthedevice'schoosingthatwhencalledwillreturnthenextfile,andattributesforthatfile.GENFILESTATEisarbitrarystatemaintainedbythegenerator.Withthatasbackground,herearethepiecesofdirectoryenumeration:(GENERATEFILESDEVICEPATTERNDESIREDPROPSOPTIONS)[Devicemethod]ReturnsageneratorthatenumeratesfilesmatchingPATTERN,whichisastringthathashostanddirectoriessuitablyfilledinfromdefaults,andmaycontainthepatterncharacter``*''tomatchanarbitrarynumberofcharacters.DESIREDPROPSisalistoffileattributesthatmayberequestedduringtheenumeration;theymustbevalidATTRIBUTEargumentstoGETFILEINFO.OPTIONSisalistofoptionstotheenumeration,chosenfromamongthefollowing:SORTThefilesshouldbeenumeratedinsortedorder.Ifthisoptionisnotspecified,thedeviceisfreetoenumeratefilesinanyconvenientorder.Thereissomequestionastowhetherfilesshouldbeenumeratedlowestversionfirst(asIFS'sdo)orhighestversionfirst(asTwenexdoes).Ipreferthelatter,butgivenserversthatdotheformer,wecurrentlymakenorequirementaboutversionorder.RESETLSTInformstheenumeratorthattheenumerationcontextissurroundedbyaRESETLST,sothatitmayperformRESETSAVEstocleanupafteritselfiftheenumerationisaborted.Cleaningupcanbeaverymessybusinesswithoutthisinformationaboutthescopeoftheenumeration,soallcallersof\GENERATEFILESarestronglyencouragedtoprovideit.GENERATEFILESshouldreturnafilegeneratorwithasuitableNEXTFILEFNandFILEINFOFN.Finepointaboutmissingfieldsinthepattern:nullfieldsinPATTERNmatchonlyfilesforwhichthecorrespondingfieldisnull.Anullversionisinterpretedashighest.Thus,DIR*=DIR*.*=DIR*.*;*enumerateseverything.DIR*.=DIR*.;*enumeratesallversionsoffileswithnullextension.DIR*.;enumerateshighestversionoffileswithnullextension.DIR*.*;enumerateshighestversionofeverything.Itisdifficultforsomedevicestoenumerateonlyhighestversionoffiles;thereareseveraldevicesinthesystemthattreatanullversionthesameasversion*.However,everydeviceshouldtryitsbest.Withsomework,anydevicethatcanenumerateallversionscanenumeratejusthighest<00>J<EFBFBD><4A>
<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68> <09><>br<02> <0C><04>Q<03><12><03><15><02>&<03><1A><03>7<04>!<21><01>#<23><02>&$ <09>-s<02>0<03>3
<01>4X<01>5<EFBFBD><35>5<EFBFBD><35>bt<>b
<EFBFBD>?8<>br<>b<00>@ <02>B_<06>F<EFBFBD><01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>b<01> <09><>`.<05>/<01><0F> <0B><06><1C><02><02> <20><06>%T<01>'H<02>)<29><03>+<2B><06>0P<05>5%<03>7<EFBFBD><01>9$<03><n<02>><3E><06>D<02>F`<05>J<EFBFBD><4A>J<EFBFBD><4A>`.<2E> <09><>^d<08><0F><05><03><16><00><17><><17><>^dt<64>^d
<EFBFBD> <20><>^dr<64>^d<>!8<02>#~<01>% <02>':<03>*%<04>."<07>3<11>3i<02>6<05>9<EFBFBD><01>;!<02>=R<08>B<EFBFBD>
<EFBFBD>J<EFBFBD><EFBFBD>J<EFBFBD><EFBFBD>^d<> <09><>\<5C><03>
f<08> <04>8<01><03>p<05>!<01>"<22><03>%<25> <09>+<2B><03>.<2E><01>0<EFBFBD><07>6<EFBFBD><01>8u<08>>Z<02>@<40><03>DN<03>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>\<5C><> <09><>Z<EFBFBD><10><14><>Z<EFBFBD><5A> <09><>WVz
<EFBFBD>M<02>X<05>S <0B>4<>WVr<56>WV<00><1F><> J<00>!<21><>!<21><>WVu<56>WV<03>#<23><08>)U<>WVr<56>WV<57>)<29><01>*<2A><01>,<2C><05>0<EFBFBD>
<EFBFBD>7<EFBFBD><01>9{<00>:<03><<3C><08>B<EFBFBD><01>Dj<02>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>WV<57> <09><>Ukt <09>Z<>Ukr<6B>Uk<00>
<07><18><03><1B><><1B><>Ukt<6B>Uk<05> <20><>Ukr<6B>Uk<00>!U<>Uk<55><11><>Q<EFBFBD>t<06><18> <09>!<21>
<EFBFBD>+<2B> <09>5<00>6<EFBFBD>
<EFBFBD>B<EFBFBD><EFBFBD>Q<EFBFBD>r<EFBFBD>Q<EFBFBD><EFBFBD>B<EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD> <09><>Nwt <09>Z<>Nwr<77>Nw<4E><12><02>c<>c<>Nwt<77>Nw <09><1D><>Nwr<77>Nw<4E>5<02> o<08>&N<01>'<27><02>*2<07>/6<07>4<EFBFBD><03>7<EFBFBD><03>;<05>><3E><03>A<EFBFBD><05>E<EFBFBD><02>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>Nw<4E> <09><>L<EFBFBD><04> <0C><02>0 <09>#<02>C<03><19><04><1C><><1C><><1C><>L<EFBFBD>t<EFBFBD>L<EFBFBD> <0B>'<11>L<EFBFBD>r<EFBFBD>L<EFBFBD><4C>'z<01>(<28><08>.M<04>1` <09>8e<01>:C<02><<3C> <09>B<EFBFBD><42>CC<03>F<EFBFBD><03>I@<01>J<EFBFBD><4A>J<EFBFBD><4A>L<EFBFBD><4C> <09><>J<EFBFBD>
<EFBFBD><11><03><14><02><16><02><18><05><1C><01>Y<08>#<23> <0B>+<2B><>J<EFBFBD><4A> <09><>G`t
<EFBFBD><16><><16><>G`x<>G`<05><1A><>G`t<>G`<60><1B><><1B><>G`x<>G`<06>!-<2D>G`t<>G`<60>"<04>"<04>G`x<>G` <0B>*<2A><>G`t<>G`<60>+<2B><>+<2B><>G`x<>G`<06>1<01>G`t<>G`<00>1<EFBFBD><31>G`r<>G`<60>@<40><06>E<EFBFBD><06>Jl<4A>G`t<>G`<60>Ob<4F>G`<60><10><>Dsr<06><15><00><16><08><1C><03><1F> <09>&<26><04>)<29><07>/<2F><>/<2F><>Dsx<73>Ds<06>5
<EFBFBD>Dsr<EFBFBD>Ds<00>5<EFBFBD><04>9<EFBFBD><01>;;<00><Z<05>@"<03>B<EFBFBD><02>EL<03>H8<02>J<EFBFBD><4A>J<EFBFBD><4A>Ds<44><10><>B<EFBFBD>
<EFBFBD>!<07>'<05><1F><01>!5<03>$<24><08>)<29><02>,<2C><02>/y<06>4<<02>6<EFBFBD><06>;(<08>@<40><04>Ct<01>E
<04>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>B<EFBFBD><42><10><>@<40><08>4<05>_<01>
<EFBFBD>#<23><>$b<>$b<>@<40>x<EFBFBD>@<40> <0B>-Y<>@<40>r<EFBFBD>@<40><>-<2D><01>/N<00>0z<03>2<EFBFBD><01>4r<03>6<EFBFBD> <09><<3C><03>?<3F><02>B<EFBFBD><01>D<EFBFBD><08>J<EFBFBD><4A>J<EFBFBD><4A>@<40><><10><>?<05><14><02> <0B>f<03>"P<03>%<25><01>'_<04>*<2A><>*<2A><>?x<>?<08>16<31>?r<>?<15>1<EFBFBD><08>8<01>9<EFBFBD><39>9<EFBFBD><39>?t<>?
<EFBFBD>B<EFBFBD><EFBFBD>?r<>?<00>C<EFBFBD><43>C<EFBFBD><43>C<EFBFBD><43>?x<>?<06>I+<2B>?r<>?<15>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>?<15><10><>=B<00><11><03><13><01>'<06><19><01>S<02><1D> <0B>%<25><05>*
<03>-E<04>1<EFBFBD><02>3<EFBFBD> <09>9<EFBFBD><39>=B<><13><>:^t<03><<3C>:^r<>:^<5E><1D><02> <20><04>#<23><05>(<28><01>*<2A> <09>2<EFBFBD><01>4n<05>8<EFBFBD><05>=<05>=<3D><01>?y<03>BN<05>F<EFBFBD><01>H{<02>J<EFBFBD><4A>J<EFBFBD><4A>:^<5E><1D><>8<EFBFBD> <09>#<23><02>%<25><05>)<29><01>+0<03>-<2D><01>/O<08>5<EFBFBD><04>8<EFBFBD><01>: <02><<3C> <09>C[<05>F<EFBFBD><46>8<EFBFBD><38><1D><>5<EFBFBD><04>!<21><01>#a<03>'<07>,<2C><01>.j<01>0,<06>5<EFBFBD><04>8<EFBFBD><05>=<01>? <09>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>5<EFBFBD><35><1D><>3<EFBFBD><06>"p<04>%'<02>'/<04>*<2A><02>,<2C><01>.<2E><06>3><06>7<EFBFBD><04>:<3A><02><<3C><05>A<EFBFBD><05>E<EFBFBD><45>E<EFBFBD><00>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>3<EFBFBD><33><1D><>2<02> d<06>$<24><02>'@<04>+,<06>/<2F><03>2<EFBFBD><01>5:<02>7<EFBFBD><06><<3C><01>?S<08>Ee<03>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>2<13><1D><>0I
<EFBFBD>%f<04>)<06>-<2D><05>18<31>0I<30><13><>-et<07><1A><>-er<65>-e<><1D><06>#<02>%<25> <09>,<2C><03>/<2F><02>2W
<EFBFBD>:l<06>?T<01>@<40> <09>G<EFBFBD><01>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>-e<><1D><>+<2B>t<07>$<24><>+<2B>r<EFBFBD>+<2B><00>%X<01>'<03>)<29><01>+$<02>.<06>3j<33>3j<33>+<2B>t<EFBFBD>+<2B><08>:<3A><>+<2B>r<EFBFBD>+<2B><00>;<3B><01>=<3D><04>A(<01>C1<04>Fb<05>I<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>+<2B><><1D><>)<29><02> I
<EFBFBD>(e<01>)<29><07>/l<>0<07>5<EFBFBD><01>8,<02>:<3A><01><<3C><00>>-<03>AZ<04>E<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A>)<29><><1D><>'<27><06>"<22><03>%
<EFBFBD>,o<04>0!<02>2S<04>5<EFBFBD><01>7{<02>9<EFBFBD> <0B>A<EFBFBD><01>Cm<02>E/<06>I7<01>J<EFBFBD><4A>J<EFBFBD><4A>'<27><><1D><>&+t
<EFBFBD>)<29><>&+r<>&+<2B>)<29><02>, <07>1 <09>8=<01>9<EFBFBD><06>><3E><02>?<3F><>&+<2B><10><>#>t <0C>|<7C>#>r<>#><3E><1B><05> <05>$<00>%<03>'T<08>-A<03>0,<00>1)<07>6
<EFBFBD>6
<EFBFBD>#>t<>#> <09>>s<>#>r<>#><3E>><3E><02>AT<41>AT<41>#>t<>#> <09>I<EFBFBD><49>#>r<>#><00>J<17>#><3E><10><> Q<03><13><04>O<04>"<06> <05>#<23><01>%O<02>'<27><07>,<2C><03>/<2F><05>3<<01>4<EFBFBD><34>4<EFBFBD><34> Qx<51> Q<06>:8<> Qr<51> Q<>:<3A><04>><3E><03>A<EFBFBD><04>D<EFBFBD><02>F<EFBFBD><04>J<EFBFBD><4A>J<EFBFBD><4A> Q<><10><><1E><02><12> <0C><1B><04><1E><01><1F><04>"<22><>#<00>$w<03>'<06>+<2B><01>,<2C>
<EFBFBD>3<EFBFBD><01>5T<07>:8<>:<3A><04>>6<>>6<><1E><><1E><>><<3C><1E><><13><><1B>t<02><<00><13><1B>r<EFBFBD><1B><>k<00>#<23>#<23><1B>t<EFBFBD><1B><02><02> <04><1B>r<EFBFBD><1B><> \<00>"<14>"<14><1B>t<EFBFBD><1B><02>%p<04>)<29><><1B>r<EFBFBD><1B><>)<29> <09>1
<EFBFBD>7<EFBFBD><EFBFBD><1B><><13><><18>t<02><<01><18><><18>r<EFBFBD><18><>B<00><1A><><1A><><18>t<EFBFBD><18><02>V<03>!<21><><18>r<EFBFBD><18><>"
<09>)!<02>*<2A><07>/<2F><01>1<EFBFBD><04>4F<03>71<03>9<EFBFBD> <09>?<3F><><18><><13><><15>t<02><<02><19><><15>r<EFBFBD><15><><1D> <09>$<24><06>)p<06>.<01>/<2F><04>2P<03>5;<03>7<EFBFBD> <09>=<3D><><15><><13><><12>t<02><<03><1A><><12>r<EFBFBD><12><><1D> <09>$<24><06>)p<06>.<01>/<2F>
<EFBFBD>6)<29><12><><10><><0F><01><11><01>A<08>Y<02>|<03><1D><06>"<22><01>$4<08>*<2A><03>-<2D><>-<2D><><0F><><0F><06>2y<06>6<EFBFBD><36><0F><><0F><>7$<01>8<EFBFBD><05><<04>?|<02>A<EFBFBD><06>F*<06>J<EFBFBD><4A>J<EFBFBD><4A><0F><><10><>%<01>#<02>f<05><18><03>t<04><1E><00><1F><03>"Q<06>&<26><02>)<<03>,<2C><01>.0<06>2<EFBFBD><32>2<EFBFBD><32>%t<>%<00>3<EFBFBD><33>%r<>%<00>4q<34>4<EFBFBD><07>:<3A><04>><3E><05>B<EFBFBD><05>G
<02>I<02>J<EFBFBD><4A>J<EFBFBD><4A>%<25><10><> R<04><13><>o<03><17><03><1B><04>}<02>"-<05>&~<03>)[<02>+<2B><08>2<EFBFBD><02>4<EFBFBD><07>:<02><<3C><08>C<EFBFBD><03>F4<06>J<EFBFBD><4A>J<EFBFBD><4A> R <09>
<EFBFBD>q?<3F>`<60> 19versionifitenumeratesinsortedorderandusesperhapsalittlelookaheadtoassurethatanynameitreturnsistheoneofhighestversion.(NEXTFILEFNGENFILESTATENAMEONLY)[FileGeneratorComponent]Generatesthenextfile,returningitsnameasastring,orNILifthegeneratorisexhausted.GENFILESTATEisthestatecomponentofthefilegeneratorreturnedfromGENERATEFILES.NAMEONLYmeansthatthecallerisonlyinterestedinthefile'sName.Extfields,notthefullfilename(andnomorethanoneversionofthefileneedbeenumerated);however,itisalwayspermissibletoreturnthefullfilename.TheNAMEONLYoptionisusedbySPELLFILE.(FILEINFOFNGENFILESTATEATTRIBUTE)[FileGeneratorComponent]ReturnsthevalueoftheATTRIBUTEpropertyofthefilemostrecentlygeneratedbytheNEXTFILEFN,i.e.,effectively(GETFILEINFOlatest-nameATTRIBUTE),buthopefullymuchfaster.ATTRIBUTEmusthavebeenamemberoftheDESIREDPROPSargumenttoGENERATEFILES.Notalldeviceimplementorsareenthusedaboutimplementingapatternmatcherforfilenames.Thefollowingfunctionsareprovidedtohelpout:(DIRECTORY.MATCH.SETUPPATTERN)[Function]AcceptsasPATTERNafilenamestringsuchaspassedtoGENERATEFILES.ReturnsanobjectsuitableasafiltertoDIRECTORY.MATCH.(DIRECTORY.MATCHFILTERTESTNAME)[Function]MatchesTESTNAME,afilename,againstFILTER,theobjectreturnedfromDIRECTORY.MATCH.SETUP.ReturnstrueifTESTNAMEmatchesthepattern,falseifnot.Thematchiscase-insensitive.(\NULLFILEGENERATOR)[Function]Returnsafilegeneratorthatproducesnofiles.(\GENERATENOFILESDEVICEPATTERNDESIREDPROPSOPTIONS)[Function]Returnsa``stupid''filegeneratorfordevicesthatdon'tknowhowtoenumerateingeneral.IfPATTERNcontainsnowildcards,butnamesafilethatisINFILEP,thenthegeneratorproducesexactlythatfile.IfPATTERNcontainsawildcardintheversionfield,itusesGETFILENAMEtolaboriouslygeneratealltheversionsofthefile.Inallothercases,\GENERATENOFILESreturnsanullfilegenerator.Informationforclientsofdeviceenumeration.Thefollowingfunctionsmakeupthe``public''interfacetodirectoryenumeration:(\GENERATEFILESPATTERNDESIREDPROPSOPTIONS)[Function]ReturnsafilegeneratorobjectforenumeratingthefilesmatchingPATTERN.PATTERNisexpandedbyaddingthedefaulthostand/ordirectoryifappropriate.SeedescriptionoftheGENERATEFILESmethodfordescriptionofDESIREDPROPSandOPTIONS.<00>J<EFBFBD><4A> R<>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD>I<12>hsp<01>Jj<4A>hs<68><10><>br<06>.<01>g<01><17> <09><1E><01> 9<05>$2<04>'<27><02>*M<03>-<06>2 <00>3#<05>6(<08><<3C><01>><05>B<03>D<EFBFBD><02>G0<03>J<EFBFBD><4A>J<EFBFBD><4A>b<01><10><>`7<01><11><06><<01>z<02><19><02>(<01><1D><06>"@<07>'.<2E>'.<2E>`7<>`7<>'4<>`7<> <09><>\<5C>t
<EFBFBD><08><08>\<5C>x<EFBFBD>\<5C> <0B><1C><>\<5C>t<EFBFBD>\<5C><><1D><><1D><>\<5C>x<EFBFBD>\<5C><07>$^<5E>\<5C>t<EFBFBD>\<5C><00>%5<>\<5C>r<EFBFBD>\<5C><>9<EFBFBD><04><<3C><08>C <09>Jl<4A>\<5C>t<EFBFBD>\<5C><>Ob<4F>\<5C><><10><>Y<EFBFBD>r<08>4<02><19><03><1C><04><1F><08>%<25><02>'<27><03>+<2B><01>-<2D><00>.<2E><06>3E<01>5-<2D>5-<2D>Y<EFBFBD>t<EFBFBD>Y<EFBFBD><02>7<EFBFBD><37>Y<EFBFBD>r<EFBFBD>Y<EFBFBD><59>8[<01>9<EFBFBD><02><b<08>B<EFBFBD><01>D0 <09>J<EFBFBD><4A>K<1A>K<1A>Y<EFBFBD><59><10><>Xx <0B>T<>Xr<>X<06><19><01><1B><02><04>!i<08>(<28><01>*<2A><02>-<03>/<2F><08>5<EFBFBD><07>;<3B><03>?'<27>?'<27>Xt<>X <0C>J<12>Xr<>X<00>J<EFBFBD><4A>K<19>K<19>X<06><10><>V3x<07>M<>V3r<33>V3<56><17><04><1B><03><1E><02> <20><05>$<24><01>%<25><03>(<28> <09>/)<01>0<EFBFBD><02>3<05>6B<36>6B<36>V3t<33>V3<07><<3C><>V3r<33>V3<56>=m<06>Ae<02>C<EFBFBD><02>F<03>H<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>V3<56><10><>T`<03>p<03><17><01><19><03><1D><03> <20><02>#<23><06>(<28><01>*f<02>,<2C><03>/m<03>2<EFBFBD><01>4<EFBFBD> <0B>=<3D><07>C<EFBFBD><01>E<01>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>T`<60><10><>R<EFBFBD>
<EFBFBD><17><01><05><02>J<03>!<21><03>#<23><04>'<27><>(<02>*<2A><>*<2A><>R<EFBFBD>x<EFBFBD>R<EFBFBD><07>1<EFBFBD><31>R<EFBFBD>r<EFBFBD>R<EFBFBD><52>1<EFBFBD><05>6<01>7B<03>:O<01><<1D><<1D>R<EFBFBD>t<EFBFBD>R<EFBFBD><08>C<EFBFBD><43>R<EFBFBD>r<EFBFBD>R<EFBFBD><00>D <09>R<EFBFBD><52> <09><>Ot
<EFBFBD><08><08>Ox<>O <0B><1C><>Ot<>O<1C><1D><><1D><>Ox<>O<08>$9<>Ot<>O<00>%<10>Or<>O<1C>9<EFBFBD><04><<3C><08>C <09>Jl<4A>Ot<>O<1C>Ob<4F>O<1C><10><>L/r<06><02><18><04><1C><01><1E><02>!<21><>!<21><>L/x<>L/<08>($<24>L/r<>L/<2F>(<28><07>.<2E><01>0<EFBFBD><02>3<EFBFBD><03>6j<03>:<07>?<3F><08>F@<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>L/<2F><10><>Jet <09><18><>Jer<65>Je<00><04><1C>
<EFBFBD>#z<>#z<>Jet<65>Je <0B>-<2D><>Jer<65>Je<4A>.>
<EFBFBD>5<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>Jex<EFBFBD>Je<08><D<>Jet<65>Je<00>=<1B>Jer<65>Je<00>>#<02>@<40><08>G<03>J<EFBFBD><4A>J<EFBFBD><4A>Je<4A><10><>H<EFBFBD><06>s<><16><><16><>H<EFBFBD>x<EFBFBD>H<EFBFBD><08>]<5D>H<EFBFBD>r<EFBFBD>H<EFBFBD><48><1E><03>"<22><03>&<26><03>+<00>-<05>3N<01>5<EFBFBD><02>8<EFBFBD><38>8<EFBFBD><38>H<EFBFBD>x<EFBFBD>H<EFBFBD> <0B>A<EFBFBD><41>H<EFBFBD>r<EFBFBD>H<EFBFBD><48>CH<07>IA<01>J<EFBFBD><4A>J<EFBFBD><4A>H<EFBFBD><48><10><>F<EFBFBD>t <0C>|<7C>F<EFBFBD>r<EFBFBD>F<EFBFBD><00><1B><>F<EFBFBD><46> <09><>CN<02> <0C><02><05><13> <0B>T<02><1E><07>$<24><04>(<28> <0B>1<EFBFBD><00>31<06>8<06>=<3D><02>@<03>B<EFBFBD><05>Gc<47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>CN<43> <09><>A<EFBFBD><08><0F><08><15><02><17><07>b<01><1E><03>!<21><03>$:<3A>A<EFBFBD><41> <09><>>t<15>E<>E<>>x<>><06>"<22><>>t<>><00>#v<>>r<>><13>DL <09>Jl<4A>>t<>><13>Ob<4F>><13><10><>;&r<06><15><01>`<60>`<60>;&x<>;&<06><1C><>;&r<>;&<26>A<00>m<03> <20><03>$<24><05>(l<03>+<2B><01>-M<05>1<EFBFBD><01>3b<33>3b<33>;&t<>;& <0C>>M<>;&r<>;&<00>?+<2B>?<3F><06>D<EFBFBD><01>F<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>;&<26><10><>9S<07>u<01><16><00><17><05><01><1C><><1C><>9St<53>9S<0E>)8<>9Sr<53>9S<00>)<29><>9S<39> <09><>5<EFBFBD>t<0F>;<3B>;<3B>5<EFBFBD>x<EFBFBD>5<EFBFBD><05>l<>5<EFBFBD>t<EFBFBD>5<EFBFBD><35>C<>C<>5<EFBFBD>x<EFBFBD>5<EFBFBD><07>#<23><>5<EFBFBD>t<EFBFBD>5<EFBFBD><00>$t<>5<EFBFBD>r<EFBFBD>5<EFBFBD><35>DL <09>Jl<4A>5<EFBFBD>t<EFBFBD>5<EFBFBD><35>Ob<4F>5<EFBFBD><35><10><>2<EFBFBD>r<06>R<>R<>2<EFBFBD>x<EFBFBD>2<EFBFBD><07><1D><>2<EFBFBD>r<EFBFBD>2<EFBFBD><00><1F><00>"K<03>%<25><04>+_<06>1D<31>1D<31>2<EFBFBD>x<EFBFBD>2<EFBFBD><05>5u<35>2<EFBFBD>r<EFBFBD>2<EFBFBD><00>7<EFBFBD><02>;G<05>@<40><07>G<EFBFBD><03>J<EFBFBD><4A>J<EFBFBD><4A>2<EFBFBD><32><10><>1"t<14>"4<>1"r<>1"<00>#<08>#<23><06>(<28><03>+<2B><01>,<2C><>,<2C><>1"x<>1"<07>3<<3C>1"r<>1"<22>3<EFBFBD><06>8<EFBFBD><02>;Q<07>@\<04>C<EFBFBD><01>D<EFBFBD><03>G<EFBFBD><47>H<02>J<EFBFBD><4A>J<EFBFBD><4A>1"<22><10><>/O<04><14><01><15><10>#<23>/O<> <09><>+<2B>t<13><1A><>+<2B>r<EFBFBD>+<2B><>DL <09>Jl<4A>+<2B>t<EFBFBD>+<2B><>Ob<4F>+<2B><><10><>(<28>r<06><15><00><16><03><18><08><1E><03>![<07>'<01>(<28><05>+<2B><>(<28><> <09><>%<25>t<10><12><12>%<25>x<EFBFBD>%<25><05><1D><>%<25>t<EFBFBD>%<25><>X<>X<>%<25>x<EFBFBD>%<25><06>#<23><>%<25>t<EFBFBD>%<25><>$<24><>$<24><>%<25>x<EFBFBD>%<25> <0B>-<2D><>%<25>t<EFBFBD>%<25><>.W<>.W<>%<25>x<EFBFBD>%<25><06>3<EFBFBD><33>%<25>t<EFBFBD>%<25><00>4]<5D>%<25>r<EFBFBD>%<25><>DL <09>Jl<4A>%<25>t<EFBFBD>%<25><>Ob<4F>%<25><><10><>"<22>r<06><15><00> <09><1C><03>$<08>%N<02>'<27><06>,q<03>/M<04>2<EFBFBD><03>6<EFBFBD><02>9<EFBFBD><01>;<3B><08>B]<01>D<07>I<14>Il<01>J<EFBFBD><4A>J<EFBFBD><4A>"<22><><10><> <20>x<06><15><> <20>r<EFBFBD> <20><>o<07><1B><01><1D> <09>$?<02>&<26><04>*<2A><00>,'<03>.<2E><03>1W<01>2<EFBFBD><32>2<EFBFBD><32> <20>t<EFBFBD> <20><06>8<EFBFBD><38> <20>r<EFBFBD> <20><00>9~<03><<3C><02>><3E><08>E<07>J<EFBFBD><4A>J<EFBFBD><4A> <20><><10><><1E><06>/<03><04><1A><>O<01><1C><><1C><><1E>x<EFBFBD><1E><06>"1<><1E>r<EFBFBD><1E><>"<22><07>(<00>)O<07>.<2E><01>0<EFBFBD><02>3<06>7<EFBFBD><05>;T<01><<3C><03>?<3F><>?<3F><><1E>t<EFBFBD><1E>
<EFBFBD>H<EFBFBD><EFBFBD><1E>r<EFBFBD><1E><>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><1E><><10><>#
<EFBFBD>w<07><1C><02><1E><02> <20><07>&<01>'<27><02>)<29><04>,r<>,<2C><01>.<2E><02>0N<04>3<EFBFBD><05>7o<37>7o<37>#t<>#<0F>D<EFBFBD><44>#r<>#<23>EB<06>I<EFBFBD><00>J<EFBFBD><4A>J<EFBFBD><4A>#<23><10><>P<03>9<03>s <09>e<>P<> <09><><17>z
<EFBFBD><11><02><13><06>!<01><19><05>
<EFBFBD>%]<5D><17>r<EFBFBD><17><00>&G<>&<26><02>)<29><08>/<2F><08>5<EFBFBD><03>9<EFBFBD><01>;<3B><02>>* <09>C<EFBFBD><08>IA<01>J<EFBFBD><4A>J<EFBFBD><4A><17><> <09><><15><08><0F> <0B><17><><15><> <09><><12>t<0E>d<>d<><12>x<EFBFBD><12><06><1C><><12>t<EFBFBD><12><><1D><><1D><><12>x<EFBFBD><12> <0B>&<26><><12>t<EFBFBD><12><>'c<>'c<><12>x<EFBFBD><12><06>,<2C><><12>t<EFBFBD><12><00>-i<><12>r<EFBFBD><12><>DL <09>Jl<4A><12>t<EFBFBD><12><>Ob<4F><12><><10><><0F>r<06><15><00><16><03><18><08><1E><05>"<22><02>$<24>
<EFBFBD>,<2C><02>.<2E><04>1<EFBFBD><07>7T<37>7T<37><0F>x<EFBFBD><0F><06><<3C><><0F>r<EFBFBD><0F><00>=`<60>=<3D><>=<3D><><0F>x<EFBFBD><0F><06>C<16><0F>r<EFBFBD><0F><>Cq<01>D<EFBFBD><07>J<EFBFBD><4A>J<EFBFBD><4A><0F><><10><>
<EFBFBD><01>,<05>Z<02>X<06> <20><03>$4<05>)x<08>/<2F><01>1<EFBFBD> <0B>:4<>;Y<02>><3E>
<EFBFBD>F8<01>H<EFBFBD><02>J<EFBFBD><4A>J<EFBFBD><4A>
<EFBFBD><EFBFBD><10><> t <0C>|<7C> r<> <02><1B><05> <20><02>"<22>
<EFBFBD>)<29><01>+%<25>+%<25> x<>  <0B>4<1C> r<> <02>4t<02>6<EFBFBD><36>6<EFBFBD><36> x<> <06><,<2C> r<> <00><<3C><> g
<EFBFBD>q?<3F>`<60><05>20(\GENERATENEXTFILEGENERATORNAMEONLY)[Function]Returnsthenextfile,asastring.GENERATORistheobjectreturnedfrom\GENERATEFILES;NAMEONLYindicatescallerdoesnotrequirethatthefullnamebereturned,butthatthenameandextensionaresufficient.(\GENERATEFILEINFOGENERATORATTRIBUTE)[Function]ReturnsthevalueoftheATTRIBUTEpropertyofthefilemostrecentlygeneratedby\GENERATENEXTFILE,i.e.,effectively(GETFILEINFOlatest-nameATTRIBUTE).ATTRIBUTEmusthavebeenamemberoftheDESIREDPROPSargumentto\GENERATEFILES.(DIRECTORY.FILL.PATTERNPATTERNDEFAULTEXTDEFAULTVERS)[Function]ThisfunctionisusedtofillindefaultsinPATTERNbeforepassingitto\GENERATEFILES.IfPATTERNdoesnotincludeanextensionorversion,butthosefieldsarenotexplicitlyomitted(e.g.,``FOO'',butnot``FOO.'';``FOO.BAR'',butnot``FOO.BAR;''),theyarefilledinwithDEFAULTEXTandDEFAULTVERS,whichthemselvesdefaultto``*''.ThisfunctionisusedbytheDIRcommand,andshouldprobablybeusedbyanycodethattakesauser-suppliedpatternandenumeratesfilesfromit.<00><<3C><> <02>
<EFBFBD><EFBFBD>f<EFBFBD>r<EFBFBD> <09><>hsp<01> L<>hs<68> <09><>bt<11><19><><19><>bx<>b<08>!<05>bt<>b<01>!<21><>!<21><>bx<>b<07>(<28><>bt<>b<00>)o<>br<>b<01>DL <09>Jl<4A>bt<>b<01>Ob<4F>b<01><10><>_r<06><15><02>,<03>><04><01><1F><00> <20><06>%<11>%<25><>%<25><>_x<>_<08>,<2C><>_r<>_<14>-?<01>.<2E><02>1<05>5*<07>:<3A><03>>.<2E>>.<2E>_t<>_
<EFBFBD>I<EFBFBD><EFBFBD>_r<>_<00>J<EFBFBD><4A>J<EFBFBD><4A>_<14><10><>]Ax<07>M<>]Ar<41>]A<><17><08>;<05> <20><03>#<23><02>&*<06>*<2A><03>-y<02>/<2F><03>2<03>5<EFBFBD><01>7<EFBFBD><08>=W<02>?<3F><03>B`<02>D<EFBFBD><03>H9<02>J<EFBFBD><4A>J<EFBFBD><4A>]A<><10><>[w<08>}<02><18>
<EFBFBD>s<>[w<> <09><>Xt<11><19><><19><>Xx<>X<08>!<05>Xt<>X<06>!<21><>!<21><>Xx<>X<08>(s<>Xt<>X<00>)J<>Xr<>X<06>DL <09>Jl<4A>Xt<>X<06>Ob<4F>X<06><10><>Ur<06>`<02>X<04><1D><01><1F><02>"<22><>"<22><>Ux<>U<08>)|<7C>Ur<>U<19>*<2A><07>0<EFBFBD><01>3<02>6<03>9<03>=
<07>B<EFBFBD><08>H<EFBFBD><01>J<EFBFBD><4A>J<EFBFBD><4A>U<19><10><>SOt<10><1E><>SOr<4F>SO<00><1F><04>"]
<EFBFBD>(<28><>(<28><>SOt<4F>SO <0B>3<0E>SOr<4F>SO<53>3<EFBFBD>
<EFBFBD>:<3A><>:<3A><>SOx<4F>SO<08>A<EFBFBD><41>SOt<4F>SO<00>B[<5B>SOr<4F>SO<00>CB<43>C<EFBFBD><43>C<EFBFBD><43>SOx<4F>SO<08>Ji<4A>SOr<4F>SO<53>J<EFBFBD><4A>J<EFBFBD><4A>SO<53><10><>Q|<03><13><03><16><03><00>
<05> K<01>!<21><02>$<07>$<07>Q|x<>Q| <0B>,<2C><>Q|r<>Q|<7C>-V<07>3O<01>4<EFBFBD><34>4<EFBFBD><34>Q|t<>Q|
<EFBFBD>@<40><>Q|r<>Q|<00>@<40><>Q|<7C> <09><>Nt<16><1C><1C>Nx<>N<06>#v<>Nt<>N<02>$M<>$M<>Nx<>N <09>+<2B><>Nt<>N<02>,<2C><>,<2C><>Nx<>N
<EFBFBD>5J<EFBFBD>Nt<>N<00>6!<21>Nr<>N<02>DL <09>Jl<4A>Nt<>N<02>Ob<4F>N<02><10><>Kr<03><13><07>1<01><1A><03><1D><01><1F><03>!<21><01>#<23><07>(<28><01>*s<>*s<>Kx<>K<06>/<2F><>Kr<>K<15>0\<05>4<EFBFBD><06>9<EFBFBD><01>:<3A><01><<3C><><<3C><>Kt<>K
<EFBFBD>Hf<EFBFBD>Kr<>K<00>I<15>Im<01>J<EFBFBD><4A>J<EFBFBD><4A>K<15><10><>IBx<06><15><>IBr<42>IB<49>R<03>b<02><1B><06> s<01>"E<08>(@<01>)<29><07>.<2E><02>1E<04>4<EFBFBD><05>8V<02>:<3A><02><<3C> <09>B<EFBFBD><06>G<EFBFBD><05>J<EFBFBD><4A>J<EFBFBD><4A>IB<49><10><>Gx<01>A<>Gxt<78>Gx<02><13><>Gxr<78>Gx<02>6<02><17><02><19><01><1A><>Gxt<78>Gx<03><1D><>Gxr<78>Gx<02><1F><01> :<3A>Gxt<78>Gx<06>&<1B>Gxr<78>Gx<02>'<27><02>)<29><02>,C<01>,<2C><>Gxt<78>Gx<07>3<EFBFBD><33>Gxr<78>Gx<03>5<EFBFBD><03>8<EFBFBD><02>:<3A><05>>-<01>?<3F><03>B<EFBFBD><42>B<EFBFBD><42>Gxx<78>Gx <09>Ji<4A>Gxr<78>Gx<47>J<EFBFBD><4A>J<EFBFBD><4A>Gx<47><10><>E<EFBFBD><02>+<2B>+<2B>E<EFBFBD>x<EFBFBD>E<EFBFBD>
<EFBFBD><1B><>E<EFBFBD>r<EFBFBD>E<EFBFBD><00>_<04> M <09>'<06>+<2B><01>-4<05>0<04>0m<03>3h<07>8<EFBFBD><01>:<03>=,<01>? <02>AM<41>AM<41>E<EFBFBD>t<EFBFBD>E<EFBFBD><02>C<EFBFBD><43>E<EFBFBD>r<EFBFBD>E<EFBFBD><45>D:<07>J<EFBFBD><4A>J<EFBFBD><4A>E<EFBFBD><45><10><>C<EFBFBD><02>3<05><17><07>N<01>*<03>"P<01>$7<02>&<26><03>)<29><03>,<2C><04>0<00>1( <0C>9<EFBFBD><06>>1<02>@<40> <09>H<04>J<EFBFBD><4A>J<EFBFBD><4A>C<EFBFBD><43><10><>B<03><13><02><14><>B<03>
<EFBFBD>q?<3F>`<60><02>
<01>
TIMESROMAN
 <01> HELVETICA<01>
TIMESROMAN<01> HELVETICA
<01>
TIMESROMAN <01>
TIMESROMAN
~GACHA
<01>
TIMESROMAN<01>
TIMESROMAN
<01>
TIMESROMAN~GACHA
j
^
/%<00>3<00>A'O _[ <00>g <00>r <00>~ <00> <00> N<00> 4<00> <00>
<00><00> 4<00> <00> <00><00>E<00>Oj/<00><00><01><><EFBFBD>ןg<01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{DSK3}STREAMS.TEDIT;23VANMELLE30-Nov-84 14:17:38