--EditedbyTeitelmanonJune10,198211:35am--thisinterfaceisintendedtobeextremelystable,andcontainallthatisnecessaryforvanillauseoftheuserexec.--UserExecUtilitiesisalsoastableinterfacewhichcontainsvariousroutinesusedinandimplementedbytheuserexecpackagewhichmayalsobeofgeneralusetoclients.Thesefacilitiesarecharacterizedingeneralasusingtheexec,butnotbeingthoughtofasfunctionsofanexecutive.--UserExecExtrasisaninterfacewhichcontainsfacilitieswhichmaybeofuseforspecializedapplications.Itexposesalittlemoreofthestructureoftheexecutive,andthereforeislikelytobealittlemorevolatilewithrespecttochanges.--UserExecPrivateisforinternalcommunicationbetweenmodulesofUserExec,and,incertainexceptionalcases,forusebyprivelegedclientsDIRECTORYHistoryUSING[HistoryEvent],IOUSING[STREAM],RopeUSING[ROPE],RTBasicUSING[TV,Type];UserExec:CEDARDEFINITIONS=BEGIN--TypesROPE:TYPE=Rope.ROPE;STREAM:TYPE=IO.STREAM;TV:TYPE=RTBasic.TV;Type:TYPE=RTBasic.Type;ProcTakesAnyReturnsAny:TYPE=PROCANYRETURNSANY;ExecHandle:TYPE=REFExecRecord;ExecRecord:TYPE=RECORD[in,out,error:STREAM,commandLine:ROPE,commandLineStream:STREAM,viewer:REFANY,--NarrowstoViewer.Maybeofinterestifclientwantstoflashtheviewer.butformostapplications,alltheclientwouldusewouldbethehandles.currentEvent:History.HistoryEvent,--usuallyhistorylist.first,butincaseofcompoundevents,thecurrentsubevent.privateStuff:REFExecPrivateRecord];ExecPrivateRecord:TYPE;--opaque.definedinuserexecprivate.Expression:TYPE=REFExpressionRecord;ExpressionRecord:TYPE;CommandProc:TYPE=PROC[exec:ExecHandle,clientData:REFANY_NIL]RETURNS[ok:BOOLEAN_TRUE,msg:Rope.ROPE_NIL];--msgisforinclusioninthehistory,sothatforexampletheusercanseewhetheracompilatonwassuccessful,orwhyanattempttorunaprogramfailed.1��pî ìïb&î%îÿî\qîOïb&�îêïb&î¡îßî"$î%äpî yï`€îðîˆîî~îéîŽî^î$î(¼î+`î00î2+î4ýî6iî<_î>†îBîîENîFòî yï^Úî yï]5îðîºî&îò�î'îÿî%‰î)lî.Áî3iî8î; î=Fî?ê îGÀî yï[îÅîÿîâîÒî Ÿî"nî$î(Óî+3î,Øî1cî5F î: î<ôîE(î yïYéî9qîòïYé�î¹ïYépîœïYé�îïYéîèî\î¾î!î"Ãî'¾î)bî+î0êî2Žî4 î yïXCîð îþîjî]îçî"Êî( î-yî1\î4Lî6î7¿î:î<G îBöî yïVžîîò�î'îPîºî]î©î"Jî#íî&: î,sî/î4Áî6,î9áî;†î=V�î>ŠîA³îEî yïTøî tîòî—î yïSRîðî@î«îÓîÛî(Bî-]î2—î4;î:¾î=ºî?`î yïQ¬ î›îfîŽîîîÈ î"rî yïNaqîŠïL»rîtïL»�îZïL»qî£ïL»�îïL» îŠïKrî¦ïK�î‹ïKqîÕïK�rî8ïKqîïK�îeïK�îŠïIprî?ïIp�î$ïIpqînïIp�rîÑïIpqîâïIp�îEïIp�îŠïGÊrîïGÊ�îóïGÊqî=ïGÊ�rî ïGÊqî$ïGÊ�î�ïGÊîŠïF$�î yïBÙrîïBÙ�îæïBÙî– qîïBÙ�rî yï?qpî yï<Bîðsî yï8öqî œï8ö�rîšï8ö�îSï8öqîñï8ö�îÖï8örî^ï8ö�î2ï8öqîoï8ö�sî yï7PqîMï7P�rîJï7P�îï7Pqî¡ï7P�î‡ï7Prîï7P�îdï7Pqî/ï7P�tî yï5«qî_ï5«�rî ]ï5«�îï5«qî´ï5«�î™ï5« tî yï4qî hï4�rîeï4�îï4qî¼ï4�î¡ï4tî yï2_qî&ï2_�rî$ï2_�îÝï2_qî{ï2_�rî `ï2_�î!ï2_î#íî&æî,×qî/gï2_�tî yï/ qî´ï/�rî²ï/�îkï/qî ï/�rîîï/�îÂï/qîžï/�î…ï/ tî yï-n qîžï-n�rîœï-n�îUï-nqîóï-n�rîØï-n�î¬ï-nqî0ï-n�îŠï+Èîî^rîIï+È�îèï+Èqîï+È�îŠï*"rîï*"�îïï*"qî,ï*"�îŠï(}rîIï(}�îéï(}qîï(}�îŠï&×rîhï&×�î<ï&×îqî§ï&×�pî„ï&×�îýï&×�îûîhî î$ëî(î)éî+î0Qî1§î5Vî9&î:Êî>î@^îDÚîG<î yï%1î ¸î}îxîÄîsî!`î#Àî'¬î)|î+ÈqîŠï#‹î?pî"²ï#‹�î#+ï#‹�î$)î(Çî1ðî4Qî5÷î8æî:‰î@ûîE[î yï!æî'qîŠï @rîï @�îcï @qî?ï @�î'ï @îŠïštî yïOqî×ïO�rîÕïO�îŽïOqîÂïO�pîDïO�î½ïO�î»î!±î&\î(tî yï qîíï�rîëï�î¤ïqîBï�rî'ï�îûïqî×ï�î¾ïtî yï¸qî&ï¸�rî#ï¸�îÜï¸qîï¸�tî yïl qî6ïl�rî4ïl�îíïlqî‹ïl�rîpïl�îïlqîýïl�î`ïlî ô î) rî0ïl�î0êïlî2Æî5À�î6ýqî9 ïl�rî9ðïl�î:Äïlqî?wïl�î?ÚïlrîBOïl�îCïlqîHYïl�rî yïÆqîUïÆ�î~ïÆî±rî9ïÆ�î ïÆqî´ïÆ�rîAïÆ�î)ïÆqîLïÆ�î¯ïÆ�pî yï!îðî¿î*îRî î¯îûî Æî"î%Qî'xî,Óî/î2î4’î6Ðî;à�î= îD�î yï{ îþî·î…îxî^îî ‡�î!¼î' quî)Èïö��������°��������TVm$u����������������������������������������������������������������������������������������������������MethodProc:TYPE=PROC[exec:ExecHandle,clientData:REFANY_NIL]RETURNS[handled:BOOLEAN_FALSE];--creatinganexecutiveCreateUserExecutive:PROCEDURE[name:ROPE_NIL,viewer:REFANY_NIL]RETURNS[exec:ExecHandle];--usedtocreateandstartupaninstanceoftheexecutiveUserExecutive.nameisthecaptionatthetopofthewindow/viewer.name=NILdefaultsto"CedarExecutive".Ifviewerissupplied,itshouldNARROWtoTypescript.TS.GetExecHandle:PROCEDURERETURNS[ExecHandle];--Ifcalledfromprocessrunningdirectlyunderanexechandle,returnsthatexechandle,otherwisereturnsdefaultexechandle--loginandpasswordGetNameAndPassword:PROCRETURNS[name,password:ROPE];SetNameAndPassword:PROC[name,password:ROPE];Login:PROC[in,out:STREAM]RETURNS[name,password:ROPE];--promptsuserfornameandpassword.echoespasswordcharacterswith*.--RegistrationofcommandsandmethodsRegisterCommand:PROC[name:ROPE,proc:CommandProc,briefDoc,doc:ROPE_NIL,clientData:REFANY_NIL];--registersacommandandcorrespondingprocedure.Subsequently,whentheusertypesnameparams{cr},procwillbecalledwiththecorrespondingexecHandle,fromwhichhecanobtaintheinput/outputstreams,aswellasthecommandLine,eitherasaropeorastream.ThecontentsofthecommandLineistherestoftheline(uptoCRor;),i.e.doesnotincludename..--briefDocisabriefdescriptionofthecommandpresentedwhenusertypes?--docismorecompletedescriptionsuppliedwhenusertypesname?.Note:RegisterCommanddoesNOTcalltheproc.--clientDatawillbesuppliedasanargumentwhentheprocedureiscalled.RegisterMethod:PROC[proc:MethodProc,name,doc:ROPE_NIL,clientData:REFANY_NIL];--usedtospecifyhandlingofclassesofinput,e.g.tomaketyping&.mesaopenavieweronthecorrespondingfile.Whenthecorrespondingprocedureiscalled,commandLineistheentireline.Note:itispermissibletoreadfromexec.commandLineStream,asitisreloadedbeforeeachattempttocallamethod.RegisterAlias:PROC[name:ROPE,becomes:ROPE,args:LISTOFROPE_NIL];--registersanalias,asimplemacroexpansionfacilityforcommands.Whenever<name>beginsacommandline,itwillbereplacedby<becomes>,e.g.RegisterAlias["compile","compiler"].Ifargsisnon-NIL,thenthenextntokensonthecommandlinewillbesubstitutedforthenargumentsin<becomes>,andtheresultingropewillreplacename.--Example:RegisterAlias["rn","copyfoo.mesa_from.mesa';deletefrom.mesa';copyto.mesa_foo.mesa\n",LIST["from","to"]]registersanaliaswhichwillcause"rnuserexecimplUserExecImpl"tobetransformedinto"copyfoo.mesa_userexecimpl.mesa';deleteuserexecimpl.mesa';copy2��tî yïb! qîìïb!�rîéïb!�î¢ïb!qî@ïb!�rî&ïb!�îÍïb!qî²ïb!�îïb!î© î'¹ rî.Ìïb!�î/ ïb!î1|î4u�î5³qî7¾ïb!�rî8¥ïb!�î9yïb!qî>-ïb!�î>ïb!rîDWïb!�îEïb!qî yï`{�rîï`{�î¿ï`{qî£ï`{�îï`{�pî yï[Šîðî!îtî yïX>qîöïX>�rîxïX>�î ïX>qî ïX>�î yïX>rî$²ïX>�î%†ïX>qî(-ïX>�rî)ºïX>�î*£ïX>qî+ÆïX>�î,¢ïX>rî1€ïX>�î2TïX>î40qî7)ïX>�rî8¶ïX>�î9ŸïX>qî:ÂïX>�rî;©ïX>�î<}ïX>qîA1ïX>�îA”ïX>î yïV˜pîïTó�îûïTó�îøî î®î§îKîiîZîMî$Œî&0î(|î.] î7¦î;Jî<¶î?îCÄîEiîGµî yïSMîîh îæîŠ�îoî •î%˜î'<î+ï î31î4¿î8ãî:Oî?ÞîA6î yïQ§î~î" tî yïN\qîæïN\�rîäïN\�îŒïN\î‚qî"sïN\�î"ÖïN\pî yïL¶îðî ~î_îœîDîXî##î&òî(å î03î4Ëî7 î>ëîDÕî yïKî÷ î yïFîðîYîýtî yïBÓqîïBÓ�rîïBÓ�î¹ïBÓîžqî"ïBÓ�î"óïBÓî' rî-ïBÓ�î.UïBÓqî0’ïBÓ�î0öïBÓ�tî yï?ˆqîÝï?ˆ�rîÛï?ˆ�î‚ï?ˆqîgï?ˆ�îÊï?ˆî ârî'Yï?ˆ�î(-ï?ˆqî*jï?ˆ�î*Íï?ˆ�tî yï<<qî êï<<�rîçï<<�îï<<qîtï<<�î×ï<<îÞrîÌï<<�îkï<<qî—ï<<�rî~ï<<�îRï<<qî#ï<<�î#hï<<î'€rî-÷ï<<�î.Ëï<<qî1ï<<�î1kï<<�pî yï:—îðîîøî îÄîhî"zî&Àî,z î2êî5æî yï5¥îðî‹î/îÎîqtî yï2ZqîSï2Z�rîPï2Z�îøï2ZqîÝï2Z�î@ï2Zrîyï2Z�îMï2Zqî!Šï2Z�î"gï2Zî&î/Îî5írî9ï2Z�î9Üï2Zqî<ƒï2Z�rî>ï2Z�î>øï2Zqî@ï2Z�î@øï2Z rî yï0´î )î"�î_qîkï0´�îRï0´�pîŠï/�î ï/�îîP�î„îŸîCî%Ü î,_î4äî8fî:²î=–îA�î yï-i îî îžînîOî Jî"—î+0 î2ëî6(î:î;çî>uîBî yï+Ãîgî¢î[î'îàî ,î)Oî-î.Ö�î0î3î4È�î5ýî:³î=wîBÃîDfî yï* îCî¯îûî“î6î‚î &î"‘î$6î&µî(nî*>î,pî/tî1Øî6„qpîŠï(w�î ï(w�îî…îñ�î&îK î î!¸î$î*î0î3î6rî9Û�qpîŠï&Ò�î ï&Ò�îîîìîVîõ î!¾î&öî*wî-\î0Åî5Qî9îD[î yï%,îî¡îíîŠï#†îî¥îuî¬îeî!Xî'^î*àî-,î3Wî4Ãtî yï• qîï•�rîï•�îï•qî“ï•�îöï•î• î$Ñî(èrî,ï•�î,×ï•qî/~ï•�rî1ï•�î1ôï•qî3Çï•�î4bï•rî9Üï•�î:§ï•î=Wî@P�îAqîC™ï•�îCüï•�pîïï�îûïï�îøî î®îî©îMî!§î#Jî'&î)¦î+Kî.÷î3î7Óî;�î<Fî@jîB]î yïIîî¾î¹îî$žî*Êî,5î0o î99î:¥î<ñî@ÁîC½îGŠîHáî yï¤ î`îî îFî)‹î+Dî,œî.î3jî7xî:Ÿî?†îA+îCÀ�îDõqtî yïXqîZïX�rîXïX�î�ïXqîåïX�îHïXrîïX�îUïXqî’ïX�îoïXrî%‚ïX�î&VïXqî(“ïX�î)pïXrî,ÌïX�î-…ïXî/±î1°qî5+ïX�rî6¸ïX�î7¡ïXqî8ÄïX�î9'ïX�pîï²�îï²�î |îËî¿îF�î{î«î!Åî(!î,žî.Æî5½î<îAîE8�î yï î“îîçî|îLî™î s î'|î)üî8Óî@ùîB‡îEuî yïgîî¨îôî �îLî•î ˆî"Ôî(ïî+“î.(î/ø î6î8Õî;!�î<dîBîî yïÁ î‚î%îqîûîÿî!”î&1îïî |î©îOî#%î(·�î*$î0Ÿî1õî5Îî<Iî=Ÿî@ÄîE§�î yïvî\îîôî$Cî&6î)fî-Iî/Þî3‰î6î> îG©î yï ÐîH î¹îîUîç�î!Tî,šî-ðî1Éî=î>euî)Èïö�ÿ������� >��������TVm$V��������������������UserExecImpl.mesa_foo.mesa--abortingUserAbort:PROC[exec:ExecHandle]RETURNS[abort:BOOLEAN];--returnsTRUEiftheuserhasrequestedanabortoftheoperationrunninginexec.Theclientprogramisresponsibleforeffectingtheabort,whichistypicallyperformedbyraisingthesignalUserAborted.SetUserAbort:PROC[exec:ExecHandle];--setstheuserabort,i.e.providesaprogrammablewaytoabort(theoperationcurrentlyrunningin)anexec.ResetUserAbort:PROC[exec:ExecHandle];--turntheabortbitoff.UserAborted:ERROR[msg:ROPE_NIL];--canbeusedbyimplementortoeffectanabortwhentheimplementorhasdetected,viaUserAbort,thattheuserhasabortedtheoperation.Thissignaliscaughtbytheuserexecutive.END.--UserExec3��pî yïb&î*�î—î yï[îðtî yïXCqî¢ïXC�rîŸïXC�îGïXCqî,ïXC�îïXCî# rî!>ïXC�î"ïXCqî'/ïXC�î'’ïXCrî+«ïXC�î,dïXCqî1KïXC�î1®ïXC�pîïVž�îïVž�î |îî„îÚî&îî€î%lî'_î*éî,Œî.Øî4Ïî9ãî;‰î>ýîAÁîEpî yïTøîä îÁîéî^îªî Œî$oî%Ûî+?î1˜î3rî7äî:0î>qtî yïQ¬qîïQ¬�rîšïQ¬�îBïQ¬qî'ïQ¬�îŠïQ¬îpîïP�îûïP�îøîîÜîÁî£îÕî �î!Aî*î,Üî.î2î4Ðî:Çî@}îE’îG±î yïNaqtî yïK qîóïK�rîðïK�î˜ïKqî}ïK�îàïKîtpîïIp�îûïIp�îøîìî8îÂîÊtî yïF$ qî÷ïF$�rîõïF$�î®ïF$qîpïF$�îÓïF$rî/ïF$�îïF$qîªïF$�rî 7ïF$�î! ïF$qî"CïF$�î"¦ïF$�pîïD~�îûïD~�îøî†îVîfî@ îî¥î#Hî%;î(Åî,Gî.“ î6Sî8Éî>Rî@… îGkî yïBÙîÅî©îîôî@ îî"Ÿî&î'ùî,bî.=î0‰ qrî yï<Bqî �ï<B�pî Üï<B�îUï<B�îSuî)Èï�ÿ�������Š��������TVm$š������������������������������������������������������������������ÿ HELVETICA������������þŸ����ÿ TIMESROMAN����������þŸ����ÿ TIMESROMAN����������þæ����ÿ TIMESROMAN�����������þæ����ÿ TIMESROMAN�����������þŸ�����ÿ TIMESROMAN����������þŸ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2���� � ����� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������j/������š)��ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ UserExec.mesa����������������������������������������������������������������������16-Dec-82 16:27:52���������������������������������������������������������������������������������������������������������������������������������������������������������