--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�î¡ï4tî
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�îAqî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ïXqî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���������������������������������������������������������������������������������������������������������������������������������������������������������