CHAPTER22INTERLISP-10SPECIFICSThischapterdescribesanumberoffeaturesofInterlisp-10thataremachineorimplementation-dependent,andarenotexpectedtobeimplementedinnewerimplementationsofInterlisp.22.1INTERLISP-10INTERRUPTCHARACTERSThetablebelowgivestheinterruptcharacterscurrentlyenabledinInterlisp-10.Note:Itispossibletochangetheassignmentsofcontrolcharacterstointerruptswith(page9.17).control-BGeneratesanimmediateerror,andcausesabreak,regardlessofthedepthortimeofthecomputation.Thusifthefunctionisloopinginternally,typingcontrol-Bwillcausethecomputationtobestopped,thestackunwoundtothepointatwhichwascalled,andthencauseabreak.Thisisastrongerinterruptionthancontrol-H.Notethattheinternalvariablesofabovearenotavailableinthisbreak,andsimilarly,mayhavealreadyproducedsomechangesintheenvironmentbeforethecontrol-Bwastyped.Itmaynotbepossibletosimplycontinuethecomputation,dependingonthenatureofthefunctioninterruptedandwhenitwasinterrupted.Thereforewheneverpossible,itisbettertousecontrol-Hinsteadofcontrol-B.control-CComputationisstopped,andcontrolreturnstotheoperatingsystem(Tenex,etc.)Theprogramcanbecontinuedwiththecommand.control-DAbortsthecomputation,andunwindsthestacktothetoplevel.Calls(page9.14).control-EAbortsthecomputation,andunwindsthestacktothelast.Calls(page9.14).control-HAtthenextpointafunctionisabouttobeentered,thefunctioniscalledinstead.types,constructsanappropriatebreakexpression,andthencalls.Theusercanthenexaminethestateofthecomputation,andcontinuebytyping,or,and/orbacktosomepreviouspoint,exactlyaswithauserbreak.Control-Hbreaksarethusalways``safe''.Control-Hbreaksoccurwhenafunctioniscalled,sinceitisonlyatthistimethatthesystemisina``clean''enoughstatetoallowtheusertointeract.Thus,ifacompiledprogramisloopingwithoutcallinganyfunctions(orifInterlisp-10isinaI/Owait),control-Hwillnotaectit.Control-B,however,will.22.1INTERRUPTCHARFOOFOOFOOFOOCONTINUERESETERRORSETERROR!INTERRUPTINTERRUPTINTERRUPTEDBEFOREBREAK1OKGOEVALRETFROMonlyFN|ï\†î%Lî,™ïVÂî! î)î*òxïOŸî ìî èî³îzîˆî”î0î$<î%Ù î+Bî- î/ºî1ðî7Uî8üîBÆ ïMùî ìî  îòîeîîÉî¸ î#î$®î(Âî3î4Ò |ïFÕî ìîi îqîTî"- xïBqî ìî Áî&î/îžîûî½ î&$î+üî1#î2Ð î89ï?kî ìî åîbîÓîîÊîuîÙ î&mî(,î,à î3Nî5 î;Nï=Æî ìî ¨ï:Áî ìî�îeîàîÎî"Œî&Rî)î-;î.dî2Ž î8çî:žî<ûî@åîB§îEÉîG€ï9îe îîŒî úî#eî+þî-vî2~ î9 î=YîAüîCuîF+ï7uîeîÀ î°î[î!Hî&Æî)"î,�î2§î4Rî6­î:Fî;ÛîBêîE’ï5Ïîeîî=îïîï2Êîeî¢î3î‚îû î&Çî*î.´î0Ôî4mî7_î9ãî?îDöï1$îeîSî”îöî!œî#8î%Çî)äî,‰ î5`î8Qî;„î@CîFMï/îeî©îrîë î%î)wî+ðî0”î2î4àî9Œî;î><î@ËîB×îH0ï-Ùîeîöî»î > î(·î/šî1Äî4Fî8·î:”î=îB° ï,3îeî-îòî[î î&î,qî2´î8aî9Êî;Hî?PîAîC—îH:ï*�îeîîËînï'ˆî ìî�îe îÕî[î"þî%Îî*˜î/bî1*î3£î9Øî>jîC‡îGï%âîeîîîwîfî#Íî&åî0ï"Ýî ìî�îeîÛî. î"oî%î*�î,ßî0Dî1åî48î6 î:bîBqîF#ïØî ìî�îeîî  î#$î&î+µî.@î1Þî3¹î6Dî?©î@²ï2îeî!ï-î ìî�îeî¿î|îêîæî!oî'Dî)î-Nî/[î1ªî7kî:)îHsï‡îeîDî$nî9�î:X î@ªîB… ïáîeîX îŒî!aî$¦î,Þî.Hî1?î4Wî7î:Eî?ÙîBXîE§îG€ï<îe îÐî î$[î&oî,xî/»î4ôî5êîA(îD†îFMï–îeîïîâî!zî#'î&?î'gî*^î.³î3¹î5[î9±î<î?îCeï‘îeîjî"î!›î%mî)4î*qî/ûî1zî5àî9eî:Ïî>î?ÜîA¼îCîFï Ÿîeîî«îTîÆî"xî$Qî)Vî+î0ïïî(o"},`m$*xï?kî>m ï9î(çï7uî?ãï2ÊîFÔï1$î2gï%âî)Bï"Ýî=ÅïØî8ðîDOï-î?þï‡îoî'ê î1ÿïáî'Óï<î*Êî-nî1˜î:¨{ï‘î�ÿÿÿ},p`m$Hxï‡î7á!ÿÿÿ}œ`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTypeNumberFunctionsAssoonascontrol-Histyped,Interlispclearsandsavestheinputbuer,andthenringsthebell,indicatingthatitisnowsafetotypeaheadtotheupcomingbreak.Ifthebreakreturnsavalue,i.e.,isnotabortedviaorcontrol-D,thecontentsoftheinputbuerbeforethecontrol-Hwastypedwillberestored.Note:Control-Hwillinterruptatlinkedfunctioncalls(seepage12.18).control-OClearstheteletypeoutputbuer.control-PChangesthesetting(seepage6.18).control-SChangesthesetting(seepage22.10).control-TPrintstotalexecutiontimefortheprogram,aswellasotherstatusinformation.22.2TYPENUMBERFUNCTIONSEachdatatypeinInterlisphasanassociated``typename''.InInterlisp-10,eachdatatypealsohasa``typenumber'',whichcanbeaccessedandmanipulatedwiththefunctionsbelow.Ingeneral,itispreferabletousethetypenamefunctions(seepage2.1).[Function]Returnsthetypenumberforthedatatypeof,e.g.,is8,thetypenumberforlists.[Function]Valueis,ifthetypenumberofisequalto.[Function]Valueistypenamefortypenumber,orifisnotavalidtypenumber,e.g.=.[Function]Valueiscorrespondingtypenumberfor,orifisnotatypename,e.g.=.willaccept,,,and,andreturnthesamevalueforeach,whichforInterlisp-10is1.Notehoweverthat=.[Function]Returnsthetypedescriptionstringfor,atypenameortypenumber.[Function]Setsthetypedescriptionstringfortobe.Thetypedescriptionisusedingarbagecollectionmessagesandby.22.2^notPRINTLEVELMINFS(NTYP)(NTYP'(A.B))(TYPEP)T(TYPENAMEFROMNUMBER)NIL(TYPENAMEFROMNUMBER30)STRING.CHARS(TYPENUMBERFROMNAME)NIL(TYPENUMBERFROMNAME'STRING.CHARS)30TYPENUMBERFROMNAMEREADTABLEPTERMTABLEPCCODEPARRAYP(TYPENAMEFROMNUMBER1)ARRAYP(GETTYPEDESCRIPTION)(SETTYPEDESCRIPTION)STORAGEDATUMDATUMDATUMNDATUMNNNNNAMENAMENAMETYPETYPETYPESTRINGTYPESTRING|ïb'î"bî%Òî+xï\:îeî{îÅîyîî Æî"8î&lî+èî/Áî2}î6 î8nî<î@’îCOîFyïZ”îeîÄîÔ î1î"î#Wî$Äî'Çî*”î,Cî/Sî3Tî5î7cî=ËîB(îC«îF ïXïîeî,înîŒî =î!Áî$Mî)mî-5î/î3´î5Çî8>î=Áî?‘îBîEÈïWIîeî°î î°î Sî"ýî&Ðî)yî+hïTDîeîQîWîùî#î(Åî*\î.‘î4î7î9Ýî= ïQ>î ìî�îeî™î÷îî#�ïN9î ìî�îeîïî$7î(™î+cî.¦ïK4î ìî�îeîïî î$eî'0î*sïH/î ìî�îeîXî{î ªî#Ìî&î(eî.Fî/óî2Þî4Šî8&î;ù |ïA î ìîiî î~xï<¦î ìî MîAî@îÞîDî©î‰ î$áî(�î-zî/: î4£î6Óî9òî<æî?åîB¡îEîF ï;î ìî-îEîÜîÚî]î! î)î,<î.§î4®î9fî;Bî@zîAÝîCV ï9[î ìî ™î îiîvî2î+îõî#9ï6VîC5 ï4°î¦îÏî"î"%î'Bî)sî+Çî.¿î1Âî7¶î8ˆîHsï3 î¦î2î�îœî#Äî%ÿï0îC5 ï._î¦î™îÛî·î î"tî%�î*¨î1+î2•î6Rî8çï+ZîC5 ï)´î¦î­î+î Lî$î&kî)‹î/¯î0žî5‘î8„î:î<‰î=ÅîA=îD^ï(î¦î-¬î9!ï% îC5 ï#dî¦îƒîÖ î%­î(¤î-´î3iî4.î8Ìî>î?eîAÁîBÓîEÉï!¾î¦î6êî9øï¹î'bî*$î6Úî@5îF4îG(ïî±î¯î †î$Óî'Sî*ïî.¸î1î4Æî8óî;P î@¹îB¿îDLîFjïmî¦î%î2mî8×ïhîC5 ïÂî¦îÙî6î"C î)Nî-!î2šî3uî4žî7«î;gî=)î@6ï½îC5 ïî¦î¨î&î S î'î+rî1°î3}î:'î;#î>îAG îHsïqî¦îßîŒî!¨ î'×î-­î0bî8=ïî(o ÿ}`m$�xïXïî+Á{ïTDî ¢xïN9îL ïK4îLï6Vî ìî>ï4°î;^î@iîCÅîEsï0î ìîÝï._îï+Zî ìî¢ï)´î2tï(îYî+'î/ ï% î ìîJï#dî5Ùï!¾îYî+' î8Jï¹î¦î.s î7Î îA)ïî¦ïmîñî0¾î3Ìïhî ìî÷ï½î ìî#rïqî2\ÿ}`m$xxï6VîöîÆî…ï4°î3oî4>î4ýï0îÍî�î\îõï._î,`î-/î-îî7ÿï+Zîºï)´î.Æî7ï% îºï#dî/Øî:ïhîºïÂî/\ï½îºî×ïî-Îî5�"ÿÿ}4D`m$Tÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ123123INTERLISP-10SPECIFICS22.3VALIDITYOFDEFINITIONSININTERLISP-10Althoughthefunctiondenitioncellisintendedforfunctiondenitions,anddonotmakethoroughchecksonthevalidityofdenitionsthat``looklike''exprs,compiledcode,ors.Thusifisgivenanarraypointer,ittreatsitascompiledcode,andsimplystoresthearraypointerinthedenitioncell.willthenreturnthearraypointer.Similarly,acalltothatfunctionwillsimplytransfertowhatwouldnormallybetheentrypointforthefunction,andproducerandomresultsifthearraywerenotcompiledfunction.Similarly,ifisgivenadottedpairoftheformwhereandfallinthesubrrange,assumesitisasubrandstoresitawayasdescribedearlier.wouldthenreturnadottedpair(butnot)totheexpressionoriginallygiven.Similarly,acalltothisfunctionwouldtransfertothecorrespondingaddress.Finally,ifisgivenanyotherlist,itsimplystoresitaway.Acalltothisfunctionwouldthengothroughtheinterpreter.Notethatdoesnotactuallychecktoseeifthes-expressionisvaliddenition,i.e.,beginswithor.Similarly,istrueifadenitionisalistandnotoftheform,=0,1,2,or3andasubraddress;istrueifitisofthisform.andworkcorrespondingly.Onlyandcheckfunctiondenitionsfurtherthanthatdescribedabove:bothandreturnwhenistruebutofthedenitionisnotorInotherwords,iftheuserusestoputinafunctiondenitioncell,willreturnthisvalue,theeditorandprettyprintwillbothtreatitasadenition,willreturn,and,,and1.22.4REUSINGBOXEDNUMBERSININTERLISP-10-SETNandprovideawayofcannibalizingliststructureforreuseinordertoavoidmakingnewstructureandcausinggarbagecollections.ThissectiondescribesananalogousfunctioninInterlisp-10forreusinglargeintegersandoatingpointnumbers,.isusedlike,i.e.,itsrstargumentisconsideredasquoted,itssecondisevaluated.Ifthecurrentvalueofthevariablebeingsetisalargeintegeroroatingpointnumber,thenewvalueisdepositedintothatwordinnumberstorage,i.e.,nonewstorageisused.Ifthecurrentvalueisalargeintegeroroatingpointnumber,e.g.,itcanbeThesefunctionshavedierentvaluesonsandsandhencemustcheck.Thecompilerandinterpreteralsotakedierentactionsforsands,andthereforegenerateerrorsifthedenitionisneither.Thenoboxpackageprovidesamoreaestheticwayofreusingconscellsaswellasnumberboxes.However,itisstillthecasethattechniquesinvolvingreusingstaticstorageshouldbeusedwithextremecaution,andbereservedforthosecaseswherethenormalmethodofstorageallocationandgarbagecollectionisnotworkableorpractical.Thedeclpackage(page23.18)takesadierentapproachtothesameproblembyavoidingcreatingnumberboxesintherstplaceviatypedeclarationsinthebodyofthefunctiondenition.Thesecondargumenttomustalwaysbeanumberoraerrorisgenerated.22.3PUTDGETDSUBRPUTDGETDPUTD(number.address)numberaddressPUTDGETDEQUALEQPUTDPUTDPUTDLAMBDANLAMBDAEXPRP(number.address)numberaddressSUBRPARGLISTNARGSFNTYPARGTYPEARGTYPEFNTYPNILEXPRPCARLAMBDANLAMBDA.PUTD(ABC)GETDEXPRPTCCODEPSUBRPNILARGLISTBNARGSRPLACARPLACDSETNSETNSETQnotLAMBDANLAMBDALAMBDANLAMBDASETNNON-NUMERICARGyï6½îHÅï$žî"«ïîïÈî ìïÊî ìï Dî ì!}`m$"|ïb'î! î)î*òï\8î ìîiî·î6 î#,î%F î-NxïWÓî ìîî~îî>î Ôî"Mî(î*[î/Ý î:èîA™îC¬îF,ïV-î ìîûîî¥î$î+î  î&Ùî)Çî-¯î1)î5Qî;kî?1îDrîFbïTˆî ìîcîéîµî¿î`îžî!î$Üî&Mî(î.)î1çî4·î9?î=7î?°îCQîH0ïRâî ìî Oî„î†î4î]î#�î%ðî){î.Ó î5î67î8Åî:wî=HîBÃîEqïQ<î ìîÿî¹î îXî0î ,î"—î&5î)Ýî,&î.�î4nî70î<‘îAºîFîG€ïO–î ìî qî¿î2î*ïL‘î ì îlî/îÜîÎî9î!Çî$Þî&Øî)wî=îG(ïJìîPî¶îaî½îÓî!Ðî'î(jî)Óî*úî.î0Äî4 î5óî9lî;îA;ïIFî ìîîHîzî«îÿî"šî%™î)Âî*Æî,zî.ß î5™ î;¸îBÌîC¯ ïG î ìî î �îJîéî^îˆî Žî";î$™ î-‡ïD›î ìî îrîðîµîgî î"Äî$-î(­î,žî.î2@î3àî6|î8=î:ðî@yîD·îGïïBõî ìîî| ï?ðî ìî „î{îÎîfî�î# î%rî'éî)nî+ñî,í î3Åî5Uî8Þ î?”îBUîFÅï>Jî�î+î î#î$rî'Zî(Àî)ïî0%î1—î2Æî5î7Ãî:=î;ûî>_ï<¤î¤î2î&îÅîdîîÖî!î*Tî+Œî.´î8òî:lî=]î>Ìî@1îA¬îCsîF"ï:ÿîQî¾î8ï7ùî ìî î!îüî$n î+î/Àî2àî5©î;Ëî@Aï6Tî ìî�îùî!™î#î&î+Úî-­î0&î6pî7öî@.ï4®î ìî ÕîŒîî‹îîî"#î#ìî-î.Ïî0î5¤î;ïîBîîE²ï3î ìî Œî�îìîìî£ î …î#/î&jî)šî*ñî,Ÿî-Ê î9 î;·î@ºîG(ï1bî(îAîî!Š|ï*?î ìîiîhîòî#¬î%Æ î-Íî/±î0£xï%Úîfî‚îtî‰î Kî!î î*/î,Wî1úî4"î7©î9Bî<àî>yîB!îFòï$4î ìî–î>îî% î#¶î&Áî+Lî1!î3î9[î>Ãî@b îEËîG¢ï"�î ìîÂî,îOî îî"¥î,î0×î2Hî5ˆî;•îìîD{îH}ïZî ìî Iîyîãïaî €î —î î‹îVîÀî"‘î(hî+î-wî2‡î5ëî99î;&î>Rî@@îE©ïÞî ìî%î‚îôîšîîóîÇ î$¤î*®î/…î3î7Éî?îA€îD ï[î ìîXî;îXîúîdî -î#Ëî(î*™î/€î4µî6šî;v îAÞîDÁïÙî ì î,î§î+î)îü î"3î%î(î-eî13î5Wî8âî:î?¸îEÂîG€ï Vî ìî qîüîî¡îßî%î(ûî*³î-î/èî3„î5Ëî8ä î@~îB6îDŸîH&ï Ôî ìî Iî¾ ï Úî €î Uîãîî”î ùî%Yî'Hî(qî-˜î/Zî=¡îAîBz ïî(o!} Ü`m$ŽxïWÓî6úî=«ïV-îAïTˆî gïRâî ïL‘î î-î3Õî5ƒîAXïJìî ìîñîEýïIFîÜî(î?pïD›î}ï?ðîuï>Jî ìîJîCîAÉîH‚ï<¤î ìî”î#Þî4*ï:ÿî ìîï7ùî Xî¾îCwï6Tî ¼îÕîÆî(µî:„îB ï4®î(î&†î) î*ºî>òï3î4Sî?ãîA˜ï1bî ìî£îîjîÒï%Úî ìîï"�î(±î,ðî88{ï�î%�xï_î#Vî,ïÜî%øî.àï Úî´î0ƒî3ßî:˜!ÿÿÿ} ä8`m$´î ìïºþ=$ÿ} `m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCaveatsconcerninguseofSETN,operatesexactlylike,i.e.,thelargeintegeroroatingpointnumberisboxed,andthevariableisset.Thiseliminatesinitializationofthevariable.willworkinterpretively,i.e.,reuseawordinnumberstorage,butwillnotyieldanysavingsofstoragebecausetheboxingofthesecondargumentwillstilltakeplace,whenitisevaluated.Theeliminationofaboxisachievedonlywhenthecalltoiscompiled,sincecompilesopen,anddoesnotperformtheboxiftheoldvalueofthevariablecanbereused.22.4.1CaveatsconcerninguseofSETNTherearethreesituationstowatchoutforwhenusing.Therstoccurswhenthesamevariableisbeingusedforoatingpointnumbersandlargeintegers.Ifthecurrentvalueofthevariableisaoatingpointnumber,anditisresettoalargeinteger,via,thelargeintegerissimplydepositedintoawordinoatingpointnumberstorage,andhencewillbeinterpretedasaoatingpointnumber.Thus,Similarly,ifthecurrentvalueisalargeinteger,andthenewvalueisaoatingpointnumber,equallystrangeresultsoccur.Thesecondsituationoccurswhenavariableisresetfromalargeintegertoasmallinteger.Inthiscase,thesmallintegerissimplydepositedintolargeintegerstorage.Itwillthenprintcorrectly,andfunctionarithmeticallycorrectly,butitisasmallinteger,andhencewillnotbetoanotherintegerofthesamevalue,e.g.,Inparticular,notethatwillreturnevenifthevariableisequalto0.Thusaprogramwhichbeginswithsettoalargeintegerandcountsitdownbymustterminatewithnot.Finally,thethirdsituationtowatchoutforoccurswhenyouwanttosavethecurrentvalueofavariableforlateruse.Forexample,ifisbeingusedby,andtheuserwantstosaveitscurrentvalueon,isnotsucent,sincethenextonwillalsochange,becauseitschangesthewordinnumberstoragepointedtoby,andhencepointedtoby.Thenumbermustbecopied,e.g.,,whichsetstoanewwordinnumber22.4NILSETNSETQSETNSETNSETNSETNSETN_(SETQFOO2.3)2.3_(SETNFOO10000)2.189529E-43SETNnotEQ_(SETQFOO10000)10000_(SETNFOO1)1_(IPLUSFOO5)6_(EQFOO1)NIL_(SMALLPFOO)NILZEROPNILFOO(SETNFOO(SUB1FOO))(EQPFOO0),(ZEROPFOO)SETNFOOSETNFIE(SETQFOOFIE)SETNFOOFIEFOOFIE(SETQFIE(IPLUSFOO))FIE|ïb'î¨î$Ä î+¶î.)î/Õxï\:î qî;î«îJî!Vî"9î$Óî'7î*¢î/Aî1 î6î9¤î>Óî@DîDÄîG€ïZ”î ìîîˆî&î> î¹ î$”î&Kî(©ïW�î ïîºîWîEî î#Àî% î(´î*„î/Îî4ÿî7¡î:lî=î@‰îCJîH&ïUéî ìî×î1îÌî–î‹î &î$ñî+Rî.9î1î4Iî8~îçîBžîHï1ñî ìî ŒîÒî1îÎîgîÔî Aî&sî)Jî,°î1Iî6€î7øî:¢î=ÇîA. îG(ï0Kî ìîX îæ îØî Nî!šî%Uî&uî*î.ðî1�î5ˆî8(î:“î>£î@GîEEï.¦î ìî £îî{îyï"î ìî ¼ îFî`îèî“î&Ëî*î+sî-Òî3î4sî82î9áî;Ÿî?î@GîEÓï|î ìî"îîî·îÊîî œî#<î'~î(¾î,pî@iîC¹ïÖî ìî�î#NïÑî ìîîmîáî„î?î Aî"Âî% î)Zî-î/Üî3Dî4ÿî8î:yî?LîCîDÆï+î ìîîRîqîfî îÔî$6î%�î)aî,—î1êî2Âî5tî7Îî:Áî>›î@EîCBîEï…î ìî ®îSî­î!3î#Áî)¦î-1î/ªî6Îî<î>×îA½îIï àî ìîîùî,î–î'îßî#î'Ìî,ßî.—î3"î4 î6Êî:Êî?ÝîA–îF!îGï :î ìîî�îŠî^î.Èî/²î3Èî9ˆî;@î“î ìîÍî*ï<íî ì îSï3—î «{ï0Kî"üxî,î@éîBÊîFxïUéî¦î…î�î#$î%½î'›î)¦î+Bî-Ñî3vî4æî73î;èî?~îDîEaîFyïTDî¦î/îâî"Ãî&Oî+Âî.~î1ôî3‘î8©î=Hî>£ îGïRžî¦îMî äî"Oî$¬î(‰î,0î0V|ïKzî ìîiîûî–îMîg î&oxïGî ìî § î î î¸îmî ~î#^î(Ñ î.œî3Øî6î:•î=3îC5 ïEpî ìî ¦îåî‚îwî“ î!nî# î&Qî,Ûî/Ÿî5†î8@î=�î@ö îGŒïCÊî àîv î`îôî"°î#ûî%î'ñî-fî2Çî3Ûî9(î<Åî@WïB$î ì îúîrî2îî!Ó î(Ÿî+bî.Àî0ˆî2‘î6Ëî8’î:›î=ïîFþï@î"Iî#Qî$Çî(,î* î1‰ï8Îî ìî šîmî°îî¿î Ýî$0î)2î+ìî.¦î9Sî:5î<ðî?•îH0ï7)î ìî æî ßîÐîßîHîîÖî!¶î$—î'®î,Õ î3î6ãî8Ý î?ÑîB…îE/ï5ƒî ìî IîÇî,îîSî kî%¨î*ƒî.4î0 î7 î:Ôî<>î>±ï2~î ïîSîªîQî‡î\îÌî@î!(î&`î(íî*î+íî.î3¿î6mî:î;gî=î>0îCQîFï0Øî ìî Ïî|îYîîîÝî0 î0êî4Ÿî7î:îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ44MiscellaneousOperatingSystemFunctionsrstofthethreeprintedbythecommand).[Function]isanerrornumberfromaJSYSfailreturn.=meansthemostrecenterror.returnstheoperatingsystemerrordiagnosticasastring.[Function]Loadsthe(unboxed)valuesof,,andintoappropriateaccumulaters,andexecutesJSYSnumber.If,,or=,0isused.returnsthe(boxed)contentsoftheaccumulatorspeciedby,i.e.,1means,2means,and3means,withequivalentto1.Compilesopenifisitselfasmallinteger,andisasmallinteger,or.IftheJSYScausesatrap,themessageisprintedbytheoperatingsystem,followedbyandtheoperatingsystemdiagnostic.Theuseristhentalkingtotheoperatingsystemexactlyasthoughcontrol-Chadbeentyped.Iftheuserthencontinuesusingthecommand,anInterlisperrorisgenerated,,andcontrolthenproceedsthesameasforanyotheravoroferror,i.e.unwindstolastorgoesintoabreakasdescribedonpage9.10.TheCJSYSpackage(page23.53)enablescallingJSYSesbytheircorrespondingname,ratherthantheirnumber.[Function]If=,returnstheloginusernumber;if=,returnstheconnectedusernumber;ifisaliteralatomorstring,returnsthenumberofthecorrespondinguser,orifnosuchuserexists.OnTOPS-20,thereisadierencebetweentheusernumber,whichisassociatedwiththejob,andthedirectorynumber,whichisassociatedwiththelesystem.Therefore,onTOPS-20,if=,returnsthedirectorynumberratherthantheusernumber.[Function]Returnsthehostnameasastringforhostnumber,e.g.,,etc.If=,thelocalhostisused.Ifthelocalhostisnotanarpanethost,valueis.Alsoreturnsifisnotavalidhostnumber.isinterpretedthesameasin.[Function]Returnsthehostnumerofthelocalhost,or,ifthelocalhostisnotanarpanethost.[Function]Startsupalowerexec(withoutamessage)using,andthenif=unreads,followedby(using,page6.47).returnsforInterlisponTOPS-20.22.6SYSTAT(ERSTR)NILERSTR(JSYS)NILJSYSNILNILTRAPATLOCATIONJSYSERROR:CONTINUEJSYSERRORERRORSET(USERNUMBER)NILTUSERNUMBERNILTUSERNUMBER(HOSTNAME)"PARC-MAXC2""BBN-TENEXD"NILNILNILUSERNAME(HOSTNUMBER)NIL(TENEX)SUBSYSNIL"QUIT"BKSYSBUFTENEX"POP"ERN_ERNERNNAC1AC2AC3RESULTACAC1AC2AC3NAC1AC2AC3RESULTACAC1AC2AC3NRESULTACNNNNNAFLGAAAFLGHOSTNFLGHOSTNHOSTNHOSTNFLGSTRFILEFLGFILEFLGSTRyïNî,mï Dî ì!}`m$|ïb'î£ î%šî, î0Íxï\:î¦îfîî{î"î&Ñî(Ëî0·ïY5îC5 ïW�îªîýîÓî!*î&:î)†î*—î.1î0€î7¾î<î@6îB|îE½ïUéî¦î Oî$þî'[î-tî1ëî5Z î;Ëî=wî> ïRäîC5 ïQ>î¦îÎî?î$ñî)/î-7î0hî1]î6úî9ä îAP ïO™î¦î\îÓî#†î)—î*sî.2î1Lî2*î6*î:î:ìîÓîA_îBŒîIïLMî¦îáîdî Hî#î$?î*Âî+¦î1Õ î8„î:8î<îB#îE™îHsïJ§î¦îî(îÃî$³î.-î/˜î0Àî4[î9Kî=’ïG¢î¦î;î­îsî#½î$úî(Lî*½îCŽîE ïEüî¦îÒî`î"«î'·î-ˆî9§î<�î?îEfïDWî¦ î4î"=î%gî'î*[î/î0ûî3Œî9Øî>‚îCNîE.ïB±î¦îIîî!)î$Øî*.î,î.µî2î5yî;óî?îïA î¦îGî î%~î(Öî*+ î9î9ãî<�îAîD&ï?eî¦îî“îKî!‘î$:î'áî+Éî-‹î1`î3çî9qî;)îDùîFÆï=Àî¦î|î¥îwî!#î'Hî)Mî,�ï:ºî¦îžîoî$Ïî(®î,äî1ëî6oî;lî=ˆî@ï ï9î¦îºîÄî"çî&+ï6îC5 ï4jî¦î,îîî#öî&�î*(î-Lî31î5•î7Ìî8Õî=±î@<îFæï2Äî¦î[î 1î!©î"ßî&Ôî*\î,,î9_î>î@†îE»îG€ï1î¦ î •î#ãî(¯î*î,î/Aî28ï.î¦îî!î wî$î%’î&Ðî-@î2¿î52î8>î=ØîA÷îCw ï,sî¦îÕîIî %î"ñî%eî+Hî0äî5î6† î=î@2îB¦îEï*Îî¦ î‰î ´î$½î')î+î-Tî7iî<>î>ÂîD¶ï)(î¦î°îÓî!1î$'ï&#îC5 ï$}î¦îéîVî%–î'Rî(‹î,mî.¸î1¿î;î< îIï"×î!»î"¨î%…î+:î/î0î2rî5Ãî8Èî:@î>$î?³îBîEnîHsï!1î¦î&î"î! î$î(2î,/î-î0Qî8#î>Gî?¿îB?îCuîFæïŒî¦ï†î™î î#î%lî(æî*“î2øï�îC5 ïÛî¦îÇîî!÷î&Fî'ìî*7î-hî0¨î4Þî5¨î6õî9AîìîC÷ï"×î¦îÚî,™ï!1î)ªî5 ï†î,?ï�î ì ïÛî2Yï0î ìî;ï‹î4îGïåî'bî1óî@‰ï Úî € ÿÿÿ}„ì`m$šxïY5îÍîEïW�î¦î5&ïRäîöî¿îŽîÛî«îøîÇîîðî¯î~ïQ>î*úî+Êî.,î.ûî4&î4õïO™î(¯î+õî,Åî/î/ßî3íî4½ïMóî7½î;˜îlï6îî¹î?ï4jîTî4¾ï2ÄîÈï*Îî(¯î*5ï&#îSîYîßï$}î6÷ï"×î'ï!1î9�ï†î¦î,ï0îÍîîSï‹î@�îDÌïåî¼î ìï 5þ=$!}pˆ`m$¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ55INTERLISP-10SPECIFICSifallofisactuallyprocessed/readbythelowerexec,iftheusercontrol-C'sandmanuallyQUIT'sbacktoInterlisp.If=,passesthestringasthesecondargumentto,insteadofunreadingit.Thishastheadvantagethatcanbeofanylength,andalsothattypeaheadwillnotinterferewiththecalltothelowerexec.Thedisadvantageisthatcannottellwhetherthecommandstothelowerexecterminatedsuccessfully,orwereaborted.Thus,if=,thevalueofisalways.Forexample,(page11.9)isimplementedusing,with=,socantelliflistingsactuallywerecompleted.22.7STORAGEALLOCATIONANDGARBAGECOLLECTIONInthefollowingdiscussion,wewillspeakofaquantityofmemorybeingassignedtoaparticulardata-type,meaningthatthespaceisreservedforstorageofelementsofthattype.willrefertotheprocessusedtoobtainfromthealreadyassignedstorageaparticularlocationforstoringonedataelement.Asmallamountofstorageisassignedtoeachdata-typewhenInterlisp-10isstarted;additionalstorageisassignedonlyduringagarbagecollection.Thepageisthesmallestunitofmemorythatmaybeassignedforusebyaparticulardata-type.Foreachpageofmemorythereisaonewordentryinatypetable.Theentrycontainsthedata-typeresidingonthepageaswellasotherinformationaboutthepage.Thetypeofapointerisdeterminedbyexaminingtheappropriateentryinthetypetable.Storageisallocatedasisneededbythefunctionswhichcreatenewdataelements,suchas,,.Forexample,whenalargeintegeriscreatedby,theintegerisstoredinthenextavailablelocationinthespaceassignedtointegers.Ifthereisnoavailablelocation,agarbagecollectionisinitiated,whichmayresultinmorestoragebeingassigned.Thestorageallocationandgarbagecollectionmethodsdierforthevariousdata-types.Themajordistinctionisbetweenthetypeswithelementsofxedlengthandthetypeswithelementsofarbitrarylength.Listcells,atoms,largeintegers,oatingpointnumbers,andstringpointersarexedlength;alloccupy1wordexceptatomswhichuse3words.Arrays,printnames,andstrings(stringcharacters)arevariablelength.Elementsofxedlengthtypesarestoredsothattheydonotoverlappageboundaries.Thusthepagesassignedtoaxedlengthtypeneednotbeadjacent.Ifmorespaceisneeded,anyemptypagewillbeused.Themethodofstorageforthesetypesemploysafree-listofavailablelocations;thatis,eachavailablelocationcontainsapointertothenextavailablelocation.Anewelementisstoredattherstlocationonthefree-list,andthefree-listpointerisupdated.Theallocationroutineforlistcellsismorecomplicated.Eachpagecontaininglistcellshasaseparatefreelist.Firstapageischosen,thenthefreelistforthatpageisused.Listsaretheonlydata-typewhichoperatethisway.22.7TNILTTENEXSUBSYSTENEXTTENEXTLISTFILESTENEXNILLISTFILESAllocationCONSPACKMKSTRINGIPLUSallocatingSTRFILEFLGSTRFILEFLGFILEFLGyïmî0÷ï Iî ì!}`m$|ïb'î! î)î*òxï\:î?îÜîî"$î#Ëî% î) î2Öî5 î7¨î;¬îB¯îDLîFæïZ”î¦îIî¦î![î'Rî,Lî/�î1= ïW�î¦î.î dî%¶î)µî+òî/£î1/î3lî7Ùî=ÜîDsîE.ïUéî¦îpîÿî"î%:î'¿î*/î0³î6Žî9*î;+î<õî?§îDLîGïTDî¦îoî õî#›î& î+“î.¨î1î3‰î53î7Žî;Rî>ìîA¿ ïRžî¦î>î!î%Àî(Jî-Àî0Jî7Vî90î;ºî?®îBó ïPøî¦ îfî!,î$~î*î-ëî4vî6­î7Œî9îî=˜îDîE|ïORî}ïLMî¦î#îxî'³î+Dî.{î/¹î3î7×î9!î?…î@4îHHîL,ïJ§î¦î!|î$î&bî'Áî)yî,Yî-˜î1kî4¹î76|ïC„î ìîiîÃ î ±î$Lî+¯ xï?î ìî žî áîÓ î‘îœî*î"âî$~î%Œî*Üî,yî1Æî5sî:Ìî<^î=l îC�îFxï=yî ìîpî,îyîîuîÙî!î%¢î'Iî,ïî.–î1Rî;Mî=æîA$îBÀîEï;Ôî ìî %îÑîîvîÓî¢î#î'Ãî(ì î/î4Mî6‰î;î=¿î@Áï8Îî ìî sî î î¿îiîÏî!?î"çî&î)î,î/¿ î5(î7î8nî=\ îCÉîHsï7)î ìî`îwîãî î( ï4#î ìî ¸îñîRî¦îÎî¦îTî"²î%tî(lî*Qî/»î1íî4Vî6Fî7e î=Œî@ƒîDîF¯ï2~î ìî 6îôîcîðîaî‘îAî Íî$dî&î'Gî*[î.Xî14î4Ìî:1î<•î?ŒîB îGÙï0Øî ìî Jî�î<î)îÖîs î ÷î$×î'5î*ÿî-Öî0äî2�î3Çî8Œî9ø îA;îC6ï/2î ìî I î¢î2îßî<îJï,-î ìîáîQîîÉî9îî î"eî(bî,rî0vî3fî6nî<‚î?¶îDÄîIï*‡î¤î¡îlîaî4îî#î'¾î)Jî.1î4€î5}î7üî<¶î>BîBƒîDQîFÐï(áî ìî§îÞî�îóî«î"$î#×î)†î+ î.˜î0î2î7Íî=^î>ŒîC® ï'<î ìî V î îîîàîŒî!î%Êî)’ï$7î ìî îð îjî`î ¼ î',î,÷î0éî3eî6î;î=þîBÔîEêï"‘î ì î¸î<î¿î5îàî!î&àî(°î,/î0}î3Kî5Âî9lî<�îBlîD=ï ëî ìî×î§î î‹îî"ˆî'‰î+6î1Nî4î7öî=Oî?±îC'îGïïEî ìî¥îãîrîÈîÑîåî"bî# î(Jî-î0‰î5-î7ìîî08î3� î;\ îDîFïZ”î ìîwî;îz îÁî î"Wî%{î(÷î*ý î2±î6¼î9î:Nî=QîBšîDïXïî ìîøîVîÓî…î¾îkîÈî%<î(øî*° î1šïUéî ìî6 îŸî¸îXîNîÜî ;î#î' î(ùî.–î1î6Çî8©î< î?îC6îG€ïTDî ì î6î îWî‘î¯ î"Àî%œî'±î+Rî/î0�î6Vî8î:‚î@îDÅîGïRžî ìî Oîuî� î¼î$ î!î#Øî(òî.z î5xî8Ðî;Ðî=8îC îD¸îG(ïPøî ìîRî'î:î­îºîî¸î"Éî$]î)‚ î/ºî2Äî5—î7�î<öî>ùîA_îD_îG€ïORî ìîBïLMî ìî 4îÎî/î`îBîî‚î Ûî#gî&Xî)î+ˆî-f î3Ðî7"î9nî?3îDSïJ§î ìî î^î îÙî éî"® î)oî+Iî.Åî3�î5Ìî8»î;0î?1îBLîDÁïIî ìîŽ î<îCîî#î&°î)&î.¨î0xî2îî6=î:î<õî?ÂîB8 ïG\î ìî{îÜî¸îmîâî"î%î&Êî(¸î,¶î/Îî1eî4‡î70î9ðî=â ïDWî ìî!îj î'îÏî!;î"Ç î+î,�î.î3•î6kî8zî=ãîDIîFîGŒïB±î ìî3îÒîÉîsîÞî óî$²î&çî+oî.Tî/Øî3Ú î:¦î=iî?�îAòîE:ïA î ìî¯î…î×îÒîxî ¡î#`î&æî(’î*ðî.tï>î ìîîœîLî îòîàî!j î(’î/9î2†î8ˆî=åîA·îCA ï<`î ìîüîÍîKîšîDî )î"“î$±î) î- î/vî5Ôî7çî<Žî?ëîEºîG€ï:ºî ìî «îâîîàînî�îGî~ î%³î*µî/¡ î6Oî9üî>þîCéîFƒï9î ìîèî|îÙîüî åî%µî'lî-.î/î4eî6î:”î>î@>îEï7oî ìî ¤îWî†îHîîºî 4î!èî#î(Oî,‹î/øî2[î6Jî<î>^îEEï5Éî ìî fîêî¾î9îî >î#î&Qî'—î*Áî,–î.¢î2¨î5Èî8±î;Xî@PîEµîG€ï4#î ìînîpîÛî˜îEîÔî"2ï1î ìî^îhîe îuîî Žî#|î$Ç î+Yî/ÿî3’î5®î7~î:Äî>ÚîBLîC˜ï/xî ìî _îÀ î5îîsî´î$èî(�î*Ýî, î1?î5yî8Šî9øî@AîC\îGï-Óî ìî ùîXîµîÑ ï*Îî ìî  î1îkîVî7î °î#î%¯î(ðî+ïî1�î4î9b î?ÄîAbîD)îG€ï)(î ìîtîvî] î [î"Ïî%Óî)î,î1iî7+î: î>NîCl ï'‚î ìîŠî(îBî�îÐî‹î$) î,mî/3î5sî8.î<Ì îDƒîF¯ï%Üî ìî æîßîÅîØîèî=î"Ýî#°î&}î+‘î1î5— î<î@¦îBKîE§ï$7î ìî ‰îŽîIî‹î¹îzî$î&} î-áî0–î6Xî9Èî=î@RîB îDtîGJï"‘î ìî> î¾î{î6înî#¯î'óî+î0pî5-î9rî=Hî@ îE îHï ëî ìî ·îîJîîcîúîWî î!Äî$!î'Ýî)•î.Cî3¶î5cî8/ïæî ìî ëî†îe îî–î!vî'î(úî+‰î.Ç î4Åî6î;m îB2îDÁï@î ìîŸîqî¡îwî¢î$ç î+Âî-åî3ïî7¨î<î>UîBîE§ïšî ìî —îìî³î+îS î%_î&úî)rî.“î0eî4iî7…î9Wî:›î=Âî@PîFnïõî ìî aî÷î+ îrî„î ,î#hî&î'ãî/(î2æî59î8î; î@gîAéîHïOî ì îÐî‚îZîyî!²î#7î'%î*,î,¤î2¬î4«î7Cî:kî=î>ÀîEßïî €î  îyîkî îwî*Wî.Òî0 î54 î;Îî=1îA€îD[îFXï—î ìîsîêîIî©îbîkî#¯î'éî,î/1î1¾î3²î6lî8î>% îF'îGîïî ìî ©î îgî8îõ î!î$î&øî*™î,Wî.mî2}î6 î>Òî@MîB îEîG(ï ‘î ìî ùîî(îQîÀî8îúï ]î €î Iîúî¦îÂîÒ î¥î![î#¬î']î*î/oî0Œî5œ îî îšî?î#ýî$Ïî&Gî)Äî,/î/€î1|î7 î9î<�îA2îB”îG4ïZ”î ìîµîî îîæî!&î%„î'ßî-î.¸î2�î6£î9î?îA îCóîF¤ïXïî ìî ãî²îÄîîuî!5î$Äî'î*lî.~ î4—î7ä î>^îBqîE�ïWIî ìî ›î�î î½îiîÌîõî ¨î#ñî( î.Kî/Òî25î7cî9!î=îAîCÚïU£î ìî åîüîçîœî"îpîî" î(î*¬ î1î5&î9Qî;@ïRžîC5 ïPøî¦îòî)î#S î)‘î+Wî1°î2šî:�î<î?ýîA5îDPîHïORî¦î¢î Gî$(î,"î-{î2‘î47î8/î=Óî@vîC0îF¤ïM­î¦î ïDWîC5 ïB±î¦îhî"gî'aî)„î, î1P î7Ûî? îAWîB\îH´ïA î¦î î#zî%)î4ßî6Žî< îAðîD.îFÐï?eî¦ îÁî ˆî"õî&î(íî.[î0È î7òî<î>ƒîC® ï=Àî¦îCî½î"™î(wî*ûî0ªî3:î8”î:~î>ºîD£îGï<î¦îîÌî /î#Wî(„î*Aî.Oî4 î6Jî9î<‡î?îDæîGjï:tî¦ îŒî$wî&6î)dî,êî/Éî3wî7î:/î= î@bîCÎ ï8Îî¦î[îî  î%Nï5Éî¦ïEî¦îÅî"©î#‡î%Žî*¬ î0Ýî62î7žî<Éî@´îB»îHïŸî¦î_î¼î#Ø ïšî¦îAî ©î!Ïî'gî/8î0 î5mî=½î>¸îBfîDÁïõî¦ îîÄî$™î*Üî,ˆî1šî:/î;nî?bîB îHsïOî¦îÖî%Îî'eî(¹î,Îî0tî2bî=î>¦îC¢îG€ï©î¦î î"ñî$[î(Þî+“î0¤î2î6Þî:�î<í îCï¤î¦î~î!î"Iî'ëî*dî/Òî1Yî3Òî7hî90îCîDîH}ïþî¦îîOî"Šî$Vî'4î+î-–î0ãî3T î9—î;î=½îF�îG€ïXî¦îÎî…î!Pî%î&‚î+ªï Úî €î óî¿î^îk îvîÿî!îî$ î&Dî(¡î=¹îAvïî(o"ÿÿÿ}à`m$¶xï\:îÉïZ”îlïRžî ìî¹ïORî%Î{ïJ§î ìî] îYîwî ‰î%bî'Nî)¬î,¡î.l î4fî6Rî9‹î;Äî@ÙîBÐîEEïIî ìî îÕî”î;îˆîŽîtî!�î%€î(rî+˜î/Ñî24 î:’î>ÍîB7îCñîEîîG“ïG\î ìî ixïDWî ìîiïB±î@€ïA î* ï2Äî¦ ï/xî¦ î äî%ïï-Óî¦îÚî î$Aï,-î¦ï*‡î¦ï'<î¦ î äï%–î¦î±î äî%ï#ðî¦ïEî $ïšî$`î9Šïõî'�î5üï¤î;‡îAiï Úî."ÿÿÿ}äŒ`m$ÄxïRžî{ïPøî.rî6½ïDWîÍî¹ïB±î9…î=qïEî)îïšî$îî)î-ïOî‚î#oî6Äî:°ï¤îCî/ïþî@ôîDàî ìï >þ=$ }pL`m$JÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿStorageAllocationandGarbageCollectionTheinitialsettingforis40.Thevalueofisitsprevioussetting.q[Function]isimplementedintermsoftheprimitivewhichcanbeusedtofurtherrenegarbagecollectionmessagesforspecializedapplications.Thegarbagecollectionmessageisactuallycomposedofsevenseparatemessages:message#1isthe``collecting''string.If,thenneitherit,northetypedependenteld(whichissettableviadescribedbelow)isprinted.message#2isthecarriage-returnafterthetype-dependenteld.Thustosimplyprintastringatthebeginningofagarbagecollection,performand.message#3isthe``''whichcomesafterthenumberofcellsactuallycollected.If,thenneitheritnorthatnumberareprinted.message#4isthe``''whichcomesafterthenumberofcellsthatarenowallocated.If,neitheritnorthatnumberareprinted.message#5isthenumberofpagesleftbelowwhichthesystemprintsmessage6.message#6isthe``''message.If,neitheritnorthenumberofpagesleftareprinted.message#7istheterminatingcarriagereturn.[Function]Setstheminimumamountoffreestoragewhichwillbemaintainedbythegarbagecollectorfordatatypesoftypenumberortypename.If,afteranygarbagecollectionforthattype,fewerthanfreewordsarepresent,sucientstoragewillbeadded(in512wordchunks)toraisethelevelto.If=,isused,i.e.,thereferstolistwords.If=,returnsthecurrentsettingforthecorrespondingtype.22.10_GCGAG(100)T_RECLAIM()collectinglists10369,10369freecells,87pagesleft.GCGAGGCGAG(GCMESS)GCGAGGCMESScollectinglargenumbers12511,33071freecells4,875pages6left7NILSETTYPEDESCRIPTION(GCMESS1)(GCMESS2),NILfreecellsNILpagesleftNIL(MINFS)NILLISTPMINFSNILMINFSMINFSMESSAGESTRINGSTRINGNTYPETYPENNTYPEN|ïb'î³î!Î î(jî+î0… xïOYî¦î|îdî"Æî)¸î+#ïLTî¦î|î"î$‘î%üî'Ôî-^}ïIOî@xîC5 ïG©îyî î&fî(.î,î-äî0^î<î@,îBÐîDÛîH0ïFî¦î:î î% î+1î0öî3! î9ï îAüîDÁïD]î¦ îÕî#(î$’î)¤î0î1Ìî5“î:æï:§î¦îBî î!Òî$y î,Eî1wî5Æî6ëî:Xî?OîAXîD)îFÐï9î¦îXî!bî%Øî'5î,#î=çîCþîHsï7\î¦ï4Vî¦îî©î!"î#Žî(©î,ãî0*î2–î5˜îªîCÏ ï,`î¦î¬îˆî«î$Zî%¯î(7î+î0*î2|ï)[î¦îíîuî Ôî#&î,=î-eî1dî5ƒî8°î;î@îAÊîDËîGŒï'µî¦î§ î ìî$òî%Îî*|î+Ñî.Yî1%î6Lî8žï$°î¦îôîƒî éî#Bî(eî*î-Ûî0Jî4Nî8Tî:­î? îCîHRï!«î¦îóî�î çî#?î,Uî-„î3Xî7Xî8/î<Øî>(î@«îCîH&ï î¦înîáî 2ïî¦îùîŒî öî#T î*«î/ÒïúîC5 ïUî¦îxîÇî#î'ÿî)§î,bî1î4üî7–î9v î@ˆîBsîDÁï¯î¦î:î~î"‰î&#î'äî*úî0+î1öî5 î<î<ôî>ØîBîDÁï î¦ îÒî î"Òî&4î)øî.�î1Hî5Mî7›î<ÀîBŠîG4ïcî¦î•îµîÛî"nî%óî+î,Èî0î2]î5 î85ï^î¦îeî Iî%Üî'Gî*Øî-iî4~î8Pî9ýî<8ï Yî¦îîôî#‡î(5î*’î4î8pî:«î= îE÷ïî("}ô`m$Zxï\Aî¦ ïZ›î¦ïXõî¦ ïUªî¦ î äïTî¦îˆî"’î&Æî,¨î/-î47ïOYî%ïLTîÚïIOî ìîßïG©î¦î6[ïA/î¦ î äî%ïïA˜î+Ðî,¨ï?Rî¦ï?»îï?Rî±î äî%ï?»î)Kï?Rî*"î+Ðï?»î-ï?Rî/-ï?»î3`ï?Rî5ï?»î8kï:§î3Aï9î.Qï2±î>=îDõï1 î¦î_î$¨ï.î$Oï,`î'ï)[î#Öî( ï'µî"mï!«î#îî(ùî4Óïúî ìîÔï^îÄî!%î/Çï YîoîÏî/W"ÿÿÿ}ô`m$¶xïIOî¤î�îEï1 î ïúîÍî–ï¯î8Òï î-ïcî7Mï^î'ï Yî' ÿÿ}ø$`m$0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9101191011INTERLISP-10SPECIFICSAsettingcanalsobechangeddynamically,evenduringagarbagecollection,bytypingcontrol-Sfollowedbyanumber,followedbyaperiod.Whenthecontrol-Sistyped,Interlispimmediatelyclearsandsavestheinputbuer,ringsthebell,andwaitsforinput,whichisterminatedbyanynon-number.Theinputbueristhenrestored,andtheprogramcontinues.Iftheinputwasterminatedbyotherthanaperiod,itisignored.Ifthecontrol-Swastypedduringagarbagecollection,thenumberisthenewsettingforthetypebeingcollected,otherwisefortype8,i.e.,listwords.[Function]Theatomhashtableautomaticallyexpandsbyaspeciednumberofpageseachtimeitllsup.Thenumberofpagesissetviathefunction.Theinitialsettingis(roomfor1024newatoms).[Function]``GarbageCollectionTrap''.Causesa(simulated)control-Hinterruptwhenthenumberoffreelistwordsremainingequals,i.e.,whenagarbagecollectionwouldoccurinmoreconses.Themessageisprinted,thefunctioniscalled,andabreakoccurs.Notethatbyadvisingtheusercanprogramthehandlingofainsteadofgoingintoabreak.returnsitslastsetting.will``disable''aprevioussincetherearenever-1freelistwords.isinitializedthisway.returnsthenumberoflistcellsleft,i.e.,numberofesuntilnexttypegarbagecollection.[Function]Storesintomemorylocation.Bothandmustbenumbers.[Function]Returnsthenumberinmemorylocation,i.e.,boxed.22.8THEASSEMBLERANDLAPTheInterlisp-10compilerhastwoprincipalpasses.Therstcompilesitsinputintoamacroassemblylanguagecalled.ThesecondpassexpandstheLAPcode,producing(numerical)machinelanguageinstructions.Theoutputofthesecondpassiswrittenonaleand/orstoredinbinaryprogramspace.control-XforInterlisp-10onTOPS-20.Forinterrupts,iscalledwith(itsthirdargument)equalto3.Iftheuserdoesnotwanttogointoabreak,theadviceshouldstillallowtobeentered,butrstsetto-1.Thiswillcauseto``quietly''goawaybycallingthefunctionthatwasinterrupted.Theadviceshouldexitvia,asinthiscasethefunctionthatwasabouttobecalledwhentheinterruptoccurredwouldnotbecalled.Theexactformofthemacroassemblylanguageisextremelyimplementationdependent,aswellasbeinginuencedbythearchitectureandinstructionsetforthemachinethatwillrunthecompiledprogram.22.11MINFSMINFS(MINHASH)MINHASH(MINHASH2)(GCTRP)GCTRPINTERRUPTINTERRUPTGCTRPGCTRP(GCTRP-1)GCTRPGCTRP(GCTRP)CONSLISTP(CLOSER)(OPENR)LAPGCTRPINTERRUPTINTERRUPTINTERRUPTnotINTERRUPTRETURNXNNNAXXAXAAAINTYPEINTYPEyï\¤îHÅïA.î>«ïOîoïOî ìï î ìï Çî ì!} `m$"|ïb'î! î)î*òxï\:î ìîîrîñî±î–î õ î(êî,#î0…î1¤î6¶ î=5î?%îC[îGþïZ”î ìîšî£îÛîmîî %î!]î&dî*‡î,ôî1—î2ðî4jî8¨î>+ îF ïXïî ìî ­î>î¨î[î×îGî ±î#Íî&Žî*î,\î0jî4�î5ø î<îî>ôîAŸîD^ïWIî ìî Ãîlî‚îîîî´î!kî#Éî)T î0î1ƒî3âî7‹î:5 îA!îCîFºïU£î ìî /îþîmîòîÉîdîÜî!î"ãî%§î)”î.î/^î4” î;<î=´îBõîDzîFòïSýî£îî@î�îªîq î$€î*¤î,ßî/ìî1xî4 î6EïPøîC5 ïORî¦î�îî!lî$å î-dî2Ìî4Úî6î;ÌîAîBÓîF¯ïM­î¦îÊî î´î!Jî$!î)Iî+î.Êî05î2Qî4�î6ëîBCîCîEõïLî¦îî'4î+Sî-Žî0Ñî3¼ïIîC5 ïG\î¦î î$Ñî)Üî.žî/ñ î7Gî;ëî=¸îC¤îG€ïE¶î¦î¸îYî!î#3î''î-Œî2Ÿî3eî5åî9€î:“î?™ îE³ïDî¦î\îeî!îî&¹î)‡î3‚î4åî:î<\ïBkî¦î;î»î ›î!îî%êî+.î.Ëî1Áî3åîA¬îD3îGTï@Åî¦î0î�î%Cî&ûî,Ûî1‰î3@î7î9Ýî;ï=Àî^î! î"åî%cï:ºî °î#x î)šî*âî5bî8ðî<–î?îBìîCeîD¸îG¡ï9î¦î êî"U î(¤î+Cï6îî"âî%Sî*Žî,Yî.¨î1Èî4¬î7Vî<‘îA¹îCyîFÐï4jî¦îkî$‡ ï1eîC5 ï/¿î¦î!î÷î%_î+iî,Dî0ùî5 î8nî:]ï,ºîC5 ï+î¦îÙî6î$^î& î+rî1|î2Xî4ê|ï#ðî ìîiîðîîºxïŒî ìî Ü îEîDîî£îhî%Eî*9î-)î0î5Öî7Êî;Œî>}î?ÁîDïæî ìî¦îîîäîkî"[î'¨î)ÿî-;î0Ñî7R î>£îDï@î ì îÇîœî îÂîî!¬î$£î& î*¼î,Àî-éî0:î4Ýî8ýî:©î>ôîD}ïæî €î#î¯îë îTî7î<î Eï¢î îŽ î!]î"Ôî&Ôî/î1rî4äî;Žî?XîAîBïîD|îFæï î ìî Kîðî}î\î|î„îßî Hî"Øî'Kî+õî.Æî:äî<Ãî>äîDlîGï�î ìî]î/î¨îÌîîÖî'åî)¶ î/Óî1æî5„î7£î<(î>ªîDCîG4ïî ì îÓî»î î î*íî2Eî33î4ñî6°î9aî<_î>ÏîDVîG4ï ˜î ìî ÊîwîfîYî îhî!*î&Öî+î-tî/cï ]î î Ðî<î†î$îgîxî"4î'Ûî),î/a î9 î@îA²îDƒîFï Úî ìî•îŽîì îfî î%ïî( î*Eî,¢î2"î4íî7–î:*î<‡îBïî(!ÿÿ} `m$ªxï\:î mïSýî ìïPøî ìîSïM­î\ï4jî³ï1eî ìî4ï,ºî ìî¥ïæî“ï¢î Êî<ï î2žï�î¬{ïî—xî"Çî-: ÿ}´`m$rxïPøî{ïIîÍïE¶î1¶ïDîï1eî¤î\ï/¿îÆî*‘î/�î3®ï,ºîÍï+î0¤î ìïAþ=$ï¢î)ùï�î +ÿÿ}Ð`m$>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ121314121314AssembleInputtothecompilerisusuallyastandardInterlispdenition.However,inInterlisp-10,machinelanguagecodingcanbeincludedwithinafunctionbytheuseofoneormoreformsasdescribedbelow.Inotherwords,allowstheusertowriteportionsofafunctionin.Notethatisonlyacompilerdirective;ithasnoindependentdenition.Therefore,functionswhichusemustnormallybecompiledinordertorun.22.8.1AssembleTheformatofissimilartothatof:isalistofvariablestobeboundduringtherstpassofthecompilation,duringtherunningoftheobjectcode.Theassemblestatementsarecompiledsequentially,eachresultinginoneormoreinstructionsofobjectcode.Whenrun,thevalueofthe``form''isthecontentsofAC1attheendoftheexecutionoftheassembleinstructions.NotethatmayappearanywhereinanInterlisp-10function.Forexample,onemaywrite:totestifjobruntimeexceeds4seconds.22.8.1.1AssembleStatementsIfanassemblestatementisanatom,itistreatedasalabelidentifyingthelocationofthenextstatementthatwillbeassembled.Suchlabelsdenedinanformarelikelabelsinthattheymaybereferencedfromthecurrentandlowerlevelnestedsors.Thepackage(page5.19)doespermittheusertorunprogramsinterpretivelywhichcontaindirectives.Eachdirectiveiscompiledasaseparatefunction.Thereissomelossineciencyovercompilingtheentirefunctionasaunit,andnotallexpressionsaretractabletothisprocedure.Thisexampleistoillustrateuseof,andisarecommendationtousetheabovecode.Thefunction(page22.6)istheappropriatemethod.Alabelcanbethelastthinginanform,inwhichcaseitlabelsthelocationoftherstinstructiontheform.22.12EXPRASSEMBLEASSEMBLELAPASSEMBLEASSEMBLENote:ASSEMBLEisprovidedforsituationswhereitsuseisunavoidable.However,itsuseisdenitelynotencouraged.Thedisadvantagesareseveral.ASSEMBLEcodeisunavoidablydependentonthePDP-10,Tenex,andimplementationdetailsofInterlisp-10.Thus,ASSEMBLEcodeisnottransportabletoInterlisponanothermachineoroperatingsystem,andimplementationchangestoInterlisp-10can(andfrequentlydo)requirechangestoexistingASSEMBLEcode.ASSEMBLEPROG(ASSEMBLEVS1S2...SN)VnotS1...SNASSEMBLEASSEMBLE(IGREATERP(IQUOTIENT(LOC(ASSEMBLENIL(MOVEI1,-5)(JSYS13)))1000)4)ASSEMBLEPROGPROGASSEMBLEMACROTRANASSEMBLEASSEMBLEASSEMBLEASSEMBLEnotJSYSASSEMBLEafterASSEMBLEyïV î.$ï*dî";ïõîïKî ìïˆî ìï Ëî ìÿ} `m$"|ïb1î&ãxï\:î ìî ¼îrîØî–î î¿îñî$�î-ô î4Àî:úî<¯ îBîD^ïZ”î ìîàîŒîIîlîAî#¶î%î*»î,éî/zî2!î4 î6êî8àîDîH0ïXïî ìîî�îSîåî%qî)‘î+äî.Ñî0tî3åî99î:æî<îApîE˜îFjïWIî ìîÛî9îCî_î î%î&Wî(½î*µ î2� î9? î?çîEÓïU£î ìî›îîËîºî$²î&_î*î+½|ïQ>î ìîixïC=î ìî Áî8î-î—î î!Æî$‘î)¥ï=3î Aî ¥î Èîþî¯î_îîïî@î#§î%þî(¸î+©î-[î/² î9äî>Kî@¢îEÎîG€ï;�î ìîî2î"î î*î,qî2„ î:Œî=ÕîC�îEWîHï9èî ìî  îÚî•î­î}î"•î%…î'åî+Žî-Iî6éî;°î=î?~îDëîF¥ï8Bî ìî ‰î ìî§îeîÈîýî»îî$ð î,Þî0Wî:lî=sîAüîH0ï6œî ìî Ú îCî'îîÈî!”î$=î'?ï)ûî ìî ™î"î‚îéîî"îV|ï%–î ìîÁîÄ xï!1î ìî mî \î(îXîÃî²î …î!Ûî#Fî'ßî)�î*¶î. î4úî7Xî<Šî>Bî@ îC­ïŒî ìî Óî—î¡ îÎîZî!Rî&Tî(î1}î4ýî7iî>)îB!îCéîFÐïæî ìî íîÜ îšîþî[î î"Õî&›î)Þî1†î2Žî; ïâî îØîî¬î!üî%î)pî+»î.žî08î2¹î8´ îA îEï_î2 îìî"¬î(Lî)Àî/Âî1yî2«î8î>îB&îCšîG4ïÝî ìî ‘î�îœîûîQî!2î&Ÿî(Dî)fî,™î/Fî1²î:Î îAýîDGïZî ìî ™î8 ïî îCîÎîPî îÌîVî'Þî(Ñî+�î/˜î0Ø î;iî=.î?¸îB,îFBï œî ìî ÁîîÓî6î¡î þ î(Wï bî î »î1îÕîàîYîóî îhî(Ëî,ªî.rî2˜î5Ÿî7î; î=ƒîBÐîD¤îGï ßî ì îðî‹ïî(!} À`m$¬xï\:î* ïZ”î<¤ïXïî>îCïWIî «ïU£î ^{ïLÚî ìxî Ì{îî‹îôî& î$;î(&î* î,vî-ì î5ùî;õî=Ûî@EîA»îG|ïK4î ì îýîè î€îüxî%k{î,Ñî0î1¨ î9Cî?ºîAÕîDIîG¢ïIŽî ìîwî% î§îëî š î%òî(�xî,O{î3™î6¾î86î:¤ îBÊîDzïGèî ìî ùîîuîHîUî#î%Ü î/mî4žî6] î;µî=´î@\îC‘ ïFCî ìî Hî×îìî�xî›{î#ØxïC=îðî&Iï@8î ìîSîï?ÏîØï@8î†ï?Ïî]ï@8î îºîhîï?Ïîíï@8îÄï=3î ì{î7‰xï;�î!×ï;$î"®ï;�î$\î'¹ï;$î(�ï9èî/©ï8Bî3)ï3—î ì î* îhî ›î)ï1ñî)î.äî0’î2@î3ï0Kî)î. ï.¦î ›ï-î*ïŒî*&î:-ïæî.*î4Pïâî ×ï_î ìîfïÝî3™ïî!%{î-xï œî6ï bî!r{ï ßîÀxîNÿÿ}̈`m$Jî ìïEþ=$ÿ}T`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿINTERLISP-10SPECIFICSIfanassemblestatementisnotanatom,ofthestatementmustbeanatomandoneof:(1)anumber;(2)aop-def(i.e.,hasapropertyvalue);(3)anassemblermacro(i.e.,hasapropertyvalue);or(4)oneofthespecialassembleinstructionsgivenbelow,e.g.,etc.AnythingelsewillcausetheerrormessageThetypesofassemblestatementsaredescribedhereintheorderofpriorityusedintheprocessor;thatis,ifanatomhasbothpropertiesand,thewillbeused.Similarlyaspecialinstructionmayberedenedviaan.Thefollowingdescriptionsareoftherstpassprocessingofstatements.Thesecondpassprocessingisdescribedinthesectionon,page22.15.(1)numbersIfofanassemblestatementisanumber,thestatementisnotprocessedintherstpass(seepage22.15).(2)LAPop-defsThepropertyisusedfortwodierenttypesofop-defs:PDP-10machineinstructions,andmacros.Ifthedenition(i.e.,thepropertyvalue)isanumber,theop-defisamachineinstruction.Whenamachineinstruction,e.g.,,appearsasofanassemblestatement,thestatementisnotprocessedduringtherstpassbutispassedto.Theformsandprocessingofmachineinstructionsbyaredescribedonpage22.16.Ifthedenitionisnotanumber,thentheop-defisamacro.Whenamacroisencounteredinanassemblestatement,itsargumentsareevaluatedandprocessingofthestatementwithevaluatedargumentsisleftforthesecondpassand.Forexample,isamacro,andinassemblecoderesultsininthecode,whereisthevalueof.Theformandprocessingofmacrosaredescribedonpage22.17.(3)assemblemacrosIfofanassemblestatementhasaproperty,thestatementisanassemblemacrocall.Therearetwotypesofassemblemacros:lambdaandsubstitution.Ifofthemacrodenitionistheatom,thedenitionwillbetotheargumentsofthecallandtheresultinglistofstatementswillbeassembled.Forexample,couldbedenedasamacrowithtwoarguments,and,whichexpandsintooccurrencesof,e.g.,expandsto.Thedenition(i.e.,valueofproperty)forcouldbe:Ifofthemacrodenitionisnottheatom,itmustbealistofdummysymbols.Theargumentsofthemacrocallwillbesubstitutedforcorrespondingappearancesofthedummysymbolsin22.13CARLAPOPDAMACC,CQ,OPCODE?-ASSEMBLE.ASSEMBLEOPDAMACOPDASSEMBLEAMACASSEMBLELAPCAROPDLAPOPDHRRZCARLAPLAPOPDLAPLAPLAPLDVLAP(LDV(QUOTEX)SP)(LDVXN)LAPNSPLAPCARAMACCARLAMBDAappliedREPEATLAMBDANMNM(REPEAT3(CAR1))((CAR1)(CAR1)(CAR1))AMACREPEAT(LAMBDA(NM)(PROG(YY)A(COND((ILESSPN1)(RETURN(CARYY)))(T(SETQYY(TCONCYYM))(SETQN(SUB1N))(GOA)))))CARLAMBDA|ïb'î! î)î*òxï\:î ìî Xî 2îéîî[î¹î“î%Jî&íî)6î/Qî2¡î4|î6Vî9¼î<\î>ñîAîC(îD=ïZ”î ìî 8î¹î³îBî~îîhî"%î(xî*)î,vî.Œî5î9Tî<�î?*î@zîF7ïXïî HîÃîˆî±î^îîyîôî#à î+î.Óî38î;­î>lîD}îG4ïWIî ìî žîûîjïTDî ìî ïî¯î”îŽ îpî!ðî(Cî+‰î-dî/ïî3Ïî5´î:Óî>:î@ïRžî ì îgî!îÖî%îîkîÍî õ î*Nî0Nî1î6]î8õî:Òî>‰îDNîEfïPøîI î?îbîrî#¢î%þî+jî,gî/]î5‹ î=;î?®îA‡îDîFæïORî ì î†î` î ’î#Zî'Ûî*Ä î1_î2¼î8Ôî:sî<ÃîANîEËîF™ïM­î ìïJ§î ìî ïG¢î ìî—î_î^î:î{îöî!/î&Äî)1î/rî0íî3pî9»î;yî=çî@·îC¿îF™ïEüî ìïB÷î ìî îTîNï?òî ìî ìîáîvîÚî@î î%Êî)†î+hî-bî1î4Uî6dî< îCôï>Lî ìî0î·î*î`îsî!×î'sî+˜î- î.8î3Àî6#î8î:‹î;üî=+îB± ï<¦î ìî îBîÎ î î"Tî#=î(Pî-î.âî0Þî6¶ î=Mî?·îEóîGjï;î ìî9î¹î*îýîî™î!î%Œî)Òî*Àî-©î1¤î4l î;'î<òîB… ï9[î ìîïîAîfîjî®ï6Vî ìî Xî–î±îîfî{î êî#ùî&Bî(<î*�î+æî/ïî4–î8–î<Ÿî@µîB ï4°î ìî ¿î ÕîÈ î�î�î#Pî%Éî,î.ð î5¿î7žî:"î@yîC¸ï3 î ìî¥î î£îðî^îüî!î&Oî';î)ôî2ïî4kî8¾î=Uï1eîtîîáîîeî(î)Áî/î2³î8î9|î;Óî?tîBÔîC©îFyï/¿î ìî ¡ îHî î·îî%-î'2î*uï,ºî ìî îÝï)´î ìî�îhîjîJî�î!î"Pî+Vî,Eî.¶î4úî6xî8{î>ZîB˜îEßï(î ìî Iîÿîœî`î8îwî$iî'* î/Aî3ãî5§î8îçî@� îG4ï$Ãî ìî ç î#îÙî!Pî%%î'!î,î-Íî4žî8Õî;úî>° îG(ï#î Ãî ±îÎî4îŠ î! î#¬î$›î6pî;Öï!xîÍîÔîªîÙîäî Šî"Bî+4î,0î3úî7Âïåî ìîÕî¼îIî¢îî›î">î$Ëî-î.‹î0î3¤î5Âî7î9†î;mî@®îGï?î ìî”îKî¨îÒî[îîò î&éî)% î2 î9Ãî;zî=ØîBéîH0ïî(}x`m$–xï\:î"UïZ”î ‰î%óïXïî ìî6î8 ïWIî¼îuî!#ïTDîB ïRžî'Uî,ñî3eïPøî ìî(ïORî0îCFïG¢î }ï?òî­îFÔï>Lîï<¦îøî* ï;î'Lï9[î æï6Vî ¡î,úî9ªï3 î#Éî/Õî5¤î@îDOï1eî ìî qî î$?î%îî,î6ÂîA&ï/¿îï)´î €î'úï(î0Îï&iî ì{î¬xï$Ãîµî/îEÀï#î ìîî"Õî'‘î.Jî/øî=–îDOï!xî ìî'×î.lïrî ìî¤î*ïÍî šî¤ï'îî¤ï�î*îºîhïÛîîºîíï6î*î¯îºî?î# î%¦ï�î¯îºîhî!rïêî¯î ïåî œî(u ÿ}xT`m$ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1515COREVALsofthedenition,andtheresultinglistofstatementswillbeassembled.Forexample,couldbeasubstitutionmacrowhichtakesoneargument,anumber,andexpandsintoinstructionstoplacetheabsolutevalueofthenumberinAC1:(4)specialassemblestatements(compilequote)takesanynumberofargumentswhichareassumedtoberegularInterlispexpressionsandarecompiledinthenormalway.E.g.Note:toavoidconfusionandminimizedependenceonthecurrentimplementation,itisbesttohaveasmuchofafunctionaspossiblecompiledinthenormalway,e.g.,toloadthevalueoftoispreferredto.(Compile)takesanynumberofargumentswhicharerstevaluated,thencompiledintheusualway.Bothandpermittheinclusionofregularcompilationwithinanassembleform.(Evaluate)takesanynumberofargumentswhichareevaluatedinsequence.Forexample,callsafunctionwhichincrementsthecompilervariable.Compilescodetosetthevariabletothecontentsof.Permitswritingamachineinstructionwiththevalueofavariableastheoperand.Generatestheappropriateaddressandindexeldstoreferencethevalueof.maybealocallyboundvariable,freevariable,,etc.Notethatmaygeneratemorethanoneinstruction.Usedtoindicateacomment;thestatementisignored.22.8.1.2COREVALsThereareseverallocationsinthebasicmachinecodeofInterlisp-10whichmaybereferencedfromcompiledcode.ThecurrentvalueofeachlocationisstoredonthepropertylistunderthepropertyNotethatassemblemacrosproducealistofstatementstobeassembled,whereascompilermacrosproduceasingleexpression.Anassemblemacrowhichalistofstatementsbeginswithandmaybespreadorno-spread.Theanalogouscompilermacrobeginswithanatom,(i.e.,isalwaysno-spread)andtheisunderstood.22.14CDRABS((X)(CQ(VAGX))(CAIGE1,0))(MOVN1,1))(CQ)CQ(CQ(COND((NULLY)(SETQY1)))(SETQX(IPLUSYZ)))XAC1,(CQX)(LDV(QUOTEX)SP)(C)CCCQ(E)E(PSTEP)SP(SETQ)AC1(VAR(,))GLOBALVARVAR(*...)computesLAMBDAeitherLAMBDAE1ENE1ENE1ENVARVAROPACVARNAMEVARNAMEVARNAMEyï\¤î8¨ïÌî ìÿ}`m$|ïb'î%ûxï\:î îÌî9 îÔî˜îî"µî%î&È î-‹î0Dî2C î:dî=îFïZ”î ìî Üî  îxî¤î°î ,î"×î)Uî*€î0î2¸î8 î:ä îB>îCíîG€ïXïî ìîUîüî³îî8îåïMóî ìî î‰îU }ïJîî|îî´xîîþî$“î(Kî+&î0‹î2€î9fî=­î@<îFîGîïIHî¦îTî!È î(þî+³î.î3üî5©î8î<¾î@ï>Lî¦î…îî ¹î&ãî)}î/d î6Ùî8Ãî;î?°ï<¦î¦î î†îwî4î"‡î$Dî('î)îî+'î0¬î2iî7µî=¾î?zîAèîF°ï;î¦î˜îTîoî!Ûî%‘î(Áî4Nî5Èî;Úï9[î,}ï6Vî¥îAîÝxîÖî1î"€î$óî)ðî+|î1ùî5Øî7þî:“ î@íîCåï4°î¦î<îƒîî"Yî&àî+šî/ðî27î7÷î9˜î>/ îEœï3 î¦î•îa}ï0î¥îAîÝxîô îyî"çî%yî*“î,>î2Ùî6Öî9î?3î@ÓîG4ï._î¦î#×î&ãî( î-�î1‹ î8€î:Ýî@“îGrï+Zî¦î¾î!î"¯î$Êî''î/Kî0øî3Uî8¿î<üï&¯î¦î¤î!Uî"€î( î.Úî1õî4Uî7þî9¸î:äî@îAÇîD(ï% î¦îwî!) î(×î.î1î58î9)î;+îAxîD*îH&ï#dî¥î$ùî'ôî)Þî+î/Qî3¢î9(î;ìîIï!¾î¦î[îÎî#£î&¤î,#î/³î2Öî5 ï¹î¦î7îäî" î#4î)°î,î2=î3¨|ïTî ìîÁxïïî ìîî¢îbîKî+î¼î#_î)î,‰î.t î3Ýî5óî:1î=eî?ˆ îFyïJî ìîî_îbîTî 'î" î%gî*Æî,^î0ªî2Üî5fî;)î=‘îA½îDGïbî îºî·îµî”î"î#uî%âî'Ì î.±î0�î2± î9Ùî?GîE/ï àî ìî5îSî1 îbî©î#jî'Šî1[î2yî4ªî6W î=îAAï ]î ìî Çîïîöî~îgîaî#ºî&¶î-Bî3î7oî;áî? îA5îE8îHsï Úî ìîLîFî îÕîÁî!, ïî( ÿÿÿ}`m$Àxï\:î ìîBüïUéî ìïTDî ÃîîSïRžî Ãî¤îSîïPøî ÃîÍî{î*ïJîî ìîœî¦ïFCî¦îïD�îˆî#jïB÷î_î#jî%ïAQîî î!»î'�î)Kï;î'Wî*}î.±î2 î=–îAÉîG«ï9[î¦ï6Vî ìîÅî¦ï4°î%œî)ï0î ìîÅî¦ï._îrîEÄï+Zî ìîeî:wï(Uî ìîîûî©ï#dîAqï!¾î šï¹î ìî qîÍ{ï àî+‰xîDO{ï ]îxï Úî3ÿÿÿ}Ä`m$²xïJîî HïJ„îïJîîíïJ„î´ï6Vî qï5ìî 8ï6Vîï5ìîÝï0î qï/œî 8ï0îï/œîÝï+Zîöî¤î,Yî-ï(Uîöî}îLî©îXï#dî¦îUî{î)î ìï½þ=$ ÿÿ}à,`m$\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ16171617INTERLISP-10SPECIFICS.SincetheselocationsmaychangeindierentreassembliesofInterlisp-10,theyarewrittensymbolicallyoncompiledcodeles,i.e.,thenameofthecorrespondingiswritten,notitsvalue.Someofthesusedfrequentlyinare:contains(pointerto)atomContains(apointerto)theatom.Routinetoboxaninteger.Routinetoboxoatingnumber.Routinetounboxaninteger.Routinetounboxoatingnumber.Theindexregistersusedforthepush-downstackpointersarealsoincludedasS.Thesearenotexpectedtochange,andarenotstoredsymbolicallyoncompiledcodeles;however,theyshouldbereferencedsymbolicallyinassemblecode.Theyare:Parameterstack.Controlstack.Basicframepointer.22.8.2LAPLAP(forLISPAssemblyProcessor)expandstheoutputoftherstpassofcompilationtoproducenumericalmachineinstructions.22.8.2.1LAPStatementsIfaLAPstatementisanatom,itistreatedasalabelidentifyingthelocationofthenextstatementtobeprocessed.IfaLAPstatementisnotanatom,ofthestatementmustbeanatomandeither:(1)anumber;(2)amachineinstruction;or(3)aLAPmacro.(1)numbersIfofaLAPstatementisanumber,alocationcontainingthenumberisproducedintheobjectcode.E.g.,Thevalueofisalistofallatomswithproperties.Notethatifafunctionisintendedtobeswappable,itmaynotcontainanyrelocatable,indexedinstructions.22.15COREVALCOREVALCOREVALASSEMBLEKTTKNILNILMKNMKFNIUNBOXFUNBOXCOREVALPPCPVPCARCAR(ADD1,A(1))..COREVALSCOREVALyï\¤î$ï¤î ï ùî ìï ¾î ìÿÿÿ}`m$|ïb'î! î)î*òxï\:îÍîäîªîCî î" î&×î(—î.4 î6"î7í î=Vî?©îBÊîE.ïZ”î ì î³î¥îŠî»îÙî"[î$¦î(Oî)óî,> î;kî<ÃîAºîDîEàïXïî ìî ¾îuî´î¼îõ î"“î+|ïUéîeîÃîî &ïRäîeî&îÇîŒî!²î$î*ïOßîeî­îZîîþïLÚîeî­îZîî!ÿïIÕîeî­îZî›î ŠïFÏîeî­îZî›î#‹ïCÊî ìî åîÐîRî¯îî�î!ßî%Êî)^î.Êî1?î4-î9òîA¤îCjîGŒïB$î ìî [îîºî³îeî³î #î$? î,î.î4î7Oî:›î@oîCyîGîï@î ì îª î…î1îýî#Åî'Jï=yîeîëï:tîeîvï7oîeîõîè|ï3 î ìîixï.¦î ìî jîZîî‘ î!^î&íî)‡î.1î0$î2¾î5ºî8íî:à îB îD‰ï-î ìîRîÑ |ï(›î ìîÁî xï$7î ìî iî �îÎîúîbîMîînîÖî$lî&î':î*‘ î1wî3Ñî9î:´î=î@îFDîGîï"‘î ì îÌîXîŒîÚîî‹î! î#î)ùî+¼î.$î4`î7Ðî9Êî;Åî?JîB îFƒîH´ï ëî ìîŒî²îÛîZ î¨î!jî#�î$¸î'ûïæî ìî ïáî ìîÄî£îóî\î³îEî•î$Fî%–î*ï î1Éî4Nî9œî;.îApîCCîEÈï;î ìî°ï �î î êî�î„îïîîSî! î"ùî&÷î0u ï Tî îÇîÓîrîÚîŽî8î"/î$î&J î-šî/.î2oî5!î:;î= îD«ï Òî ì ïî(!ÿÿÿ}´`m$0xï\:î ìïZ”î5ïXïîÓî$?ïUéî ìî#¡ïRäî ìî'‰ïOßî ìïLÚî ìïIÕî ìïFÏî ìïCÊî;Ãï=yî ìï:tî ìï7oî ìï"‘î&äïáî ”ï6î ìîîÍî{î*ï�î qïêî qï �îHî*"ÿ}¼l`m$`î ìïêþ=$ÿ}(`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ18191819LAPStatementsStatementsofthistypeareprocessedlikemachineinstructions,withtheinitialnumberservingasa36-bitop-code.(2)MachineInstructionsIfofaLAPstatementhasanumericvalueforthepropertythestatementisamachineinstruction.Thegeneralformofamachineinstructionis:isanyPDP-10instructionmnemonicorInterlispUUO.,theaccumulatoreld,isoptional.However,ifpresent,itbefollowedbyacomma.iseitheranumberoranatomwithaproperty.Theloworder4bitsofthenumberorareOR'dtotheACeldoftheinstruction.maybeusedanywhereintheinstructiontospecifyindirectaddressing(bit13setintheinstruction)e.g.,.istheaddresseldwhichmaybeanyofthefollowing:Referencetoanunboxedconstant.Alocationcontainingtheunboxedconstantwillbecreatedinaregionattheendofthefunction,andtheaddressofthelocationcontainingtheconstantisplacedintheaddresseldofthecurrentinstruction.Theconstantmaybeanumbere.g.,;anatomwithaproperty(inwhichcasetheconstantisthevalueoftheproperty,attime);anyotheratomwhichistreatedasalabel(theconstantisthentheaddressofthelabeledlocation)e.g.,isequivalentto;oranexpressionwhosevalueisanumber.TheaddressisareferencetoaInterlisppointer,e.g.,alist,number,string,etc.Alocationcontainingthepointerisassembledattheendofthefunction,andthecurrentinstructionwillhavetheaddressofthislocation,e.g.,Speciesthecurrentlocationinthecompiledfunction;e.g.,hasthesameeectas.aliteralatomIftheatomhasaproperty,itisareferencetoasystemlocation,e.g.,,andtheaddressusedisthevalueofthe.Thevalueisan18bitquantity(ratherthan9),sincesomeUUO'salsousetheACeldoftheinstruction.TheTENEXJSYS'sarenotdened,thatis,onemustwriteinsteadof.22.16.A(1)(4)(9)CAROPD,(,@(index))mustCOREVALCOREVAL@(HRRZ1,@1(VP))=(CAME1,=3596)COREVALLOAD(MOVE1,=TABLE)(MOVEI1,TABLE)'(HRRZ1,'"ISNOTDEFINED")(HRRZ1,'(NOTFOUND))*(JRST*2)(SKIPA)COREVAL(SKIPA1,KNIL)COREVAL(JSYS107)(KFORK)OPCODEACADDRESSOPCODEACACADDRESSCONSTANTPOINTERyïLûî6ÖïEKî1ï Æî ìï Jî ìÿÿÿ}`m$|ïb'î$³î'ö xïTAî ì îÔî~îîîTî �î#î(� î04î3?î5�î9iî>„îC/îDÎîEéîGÂïRœî ìî åïO–î ìî î½ ïL‘î ìîÀî�îëîRî§î?î�î%î(Üî+=î-¿î8¨î;+îA€îCîD^ïJìî ì îDîîèîLîî,î$¬ î+€ïDáî~îéî‡îÀî£ îxî&5î'÷î-lïAÜî “î jîà î†îòîXî!8î'cî(¿î-ãî2wî4bî9ýî;òî=îDŽîEôï@6î ìî !îUî$îî¦îËî"sî(±î+”î.>î1üî3<î5èî7¬î:î?JîGŒï>�î ìî ¨îUî³î;îSî îh ï;‹î \îsîwîÅî îÌî> î%(î&ëî+™î0µ î7ˆî:2î<*î>[î@îB� ï9åî ìîÁï6àîòî]îºî î¸îÂî"Ãî$²î'Pî)î+e ï3Ûî¦î î�î!rî'î,éî.[î3s î: îï(Sî±î®îpî!_ î(î,;î/áî1Lî2tï%Nî¦î™îœî!#î"iî(~î*Iî+�î1 î6aî9dî:ªî=bîCîGTï#¨î¦î2îe î%î'wî,<î-§î4:î5Òî80î:æî<žî>üîDÊîG€ï"î¦îk î#@î%éî),î+Šî0oî2&î4Åî:Oïòî¦î@î—î$Uî)€î+&î-|î3nî9WîEîG€ïMî¦î îÒî&aïGî ìî îüî¦îtîîæî"¦î$î/áî1 î2¬î4dî5Úî<î>î?�îDSï¢î¦î(#î)+î,î.…î3Žî6ëî8yî:úî>Äî@ŸîIï ]î î+îî¾îîîîoî î$Þî(Bî*˜î.Hî2î7î:î<Çî?eîB.îE‡îG€ï Úî ì ï áî î êîKîØî*îœî!Úî$¦î&hî)î,vî8Ûî=ŠîE#ïî("ÿ}$`m$xï\8î qïZ’î ìîïXìîïWGîïL‘î ‘î3zïGæî ìî'îÕîÝ{ïAÜî/3xï@6îîAï;‹î ìï9åî ËîÕîƒî1îàîŽï3Ûî ìï.êî+Eî0Pî1þî3¬î5Zï-Dî¦îAéï)øî'qî,|î.*î/Øî1†î@òîFÔîH‚ï(Sî¦ï%Nî ìïýî¦î±î_î î!»î%î(tïøî¦î±î_î î!»î%ïïòî ìî<0îA:îBéïMî ïGî)ÿï¢î²î “î"Aî#ðîC ï áî/ðî4ûî?A"ÿÿÿ},Ü`m$¶xïGæî Ãî¨îxîƒïDáî ìïAÜî ìî »îBgîC7ï6àî ìï3Ûî šî§ï%Nî šî ìïÀþ=$ ÿ}0`m$6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2020INTERLISP-10SPECIFICSOtherwisetheatomisalabelreferencingalocationintheLAPcode,e.g.,.anumberThenumberistheaddress;e.g.,alistTheformisevaluated,anditsvalueistheaddress.Anythingelseintheaddresseldcausesanerrormessage,e.g.,.Anumbermayfollowtheaddresseldandwillbeaddedtoit,e.g.,.isdenotedbyafollowingtheaddresseld,i.e.,theaddresseldbepresentifanindexeldistobeused.Theindex(ofthelist)mustbeeitheranumber,oranatomwithaproperty,e.g.,.(3)LAPmacrosIfofaLAPstatementisthenameofaLAPmacro,i.e.,hastheproperty,thestatementisamacrocall.Theargumentsofthecallfollowthemacroname:e.g.,.LAPmacrocallscomprisemostoftheoutputoftherstpassofthecompiler,andmayalsobeusedin.Thedenitionsofthesemacrosarestoredonthepropertylistundertheproperty,andlikeassemblermacros,maybeeitherlambdaorsubstitutionmacros.Intherstcase,themacrodenitionisappliedtotheargumentsofthecall;inthesecondcase,theargumentsofthecallaresubstitutedforoccurrencesofthedummysymbolsinthedenition.Inbothcases,theresultinglistofstatementsisagainprocessed,withmacroexpansioncontinuingtillthelevelofmachineinstructionsisreached.SomeexamplesofLAPmacrosareshownbelow.Theargumentswerealreadyevaluatedintherstpass,seepage22.13.22.17(JRSTA)(MOVSI1,400000Q)(HLRZ2,1(1))(SKIPA1,KNILL)-LAPERROR(JRSTA2)INDEXlistmustCARCOREVAL(HRRZ1,0(1))CAROPD(LQ2FIE3)ASSEMBLEOPD(DEFLIST'[(LQ((X)(*LOADQUOTETOAC1)(HRRZ1,'X)))(LQ2((XAC)(*LOADQUOTETOAC)(HRRZAC,'X)))(LDV((ASP)(*LOADLOCALVARIABLETOAC1)(HRRZ1,(VREFASP))))(STV((ASP)(*SETLOCALVARIABLEFROMAC1)(HRRM1,(VREFASP))))(LDV2((ASPAC)(*LOADLOCALVARIABLETOAC)(HRRZAC,(VREFASP))))(LDF((ASP)(*LOADFREEVARIABLETOAC1)(HRRZ1,(FREFASP))))(STF((ASP)(*SETFREEVARIABLEFROMAC1)(HRRM1,(FREFASP))))(LDF2((ASP)(*LOADFREEVARIABLETOAC)(HRRZ2,(FREFASP))))(CAR1(NIL(*CAROFAC1TOAC1)yï5­î"ï Dî ìÿ}`m$|ïb'î! î)î*òxï\Aî¦î!î }î#÷î%`î&ˆî)à î1 î22î7cî9î;kî>­îBHïZ›îTïW–î ìî î¦î|î£î!î#kî(ÊïOæî ìî î¦î|îàîJ î%Çî({î*Tî-ûî/eî1ÂïLàî ìîîËî‡îóîçîî#Rî%Pî(Íî.ŠîIïK;î ìî wîžîŸîÔî1îî".î$ãî'Œî){î-›î/Hî0õî<:ïH5î¨îîeîdîÓî åî#Gî(1î+§î.?î0¡î5‹î;õî=éîB¾îD"îFïF�î ìî î îfînîvîeîEî àî"±î%(î'õî+sî-{î1}î2¿î8^î:9îßî ìî˜îaî›îïî0î«îî"çî$°î%êî)>î-Öî0}î3î5pî=œî>‰î@÷îG8îH´ï=:î ìîî!î÷îŸîVî´î!<î%pî'Îî+øî0-î*îFHîG(ï6éî ìî ‚î¿î¶î¥î�î Xî%+î&Û î.8î3bî5î7hî:î=Kî?–îC®ï5Cî ìî iîaî!î�îKîî…î$Xî&î(‡î-(î0‚î2òî9­î;wî=çî@‚îBæ ï3�î ìî * îœîWî¸îÌî"î#Çî&( î,åî.¶î1òî5¾î8î=Âî@îA¼ îHsï1øî ìî ‘ î$î;îeî!Ö î(ªî*Åî-"î0dî2î7› î>óî@^ï.òî ìî ¾î¶îmî°î^î¯î#úï Úî î êî’îàî¯î"Ôî$€î&Ýî)žî,ìî/=î2�ïî(!ÿÿÿ}˜`m$Nxï\AîE&ïZ›î¦ïT�î¦îˆî6î äïRëî¦î±î_î î!»ïLàî1{î7]î9 î:¹î@›îBIïK;î3Óî8Þî:ŒïH5î ì{î‘î8¨xïF�î¾ïDêî ìîˆî“îAîïî�ï>ßî ~î;ï=:î3 î7?î:›ï8�î ìîCÃï+íî ìï*Hî ìîöî)Ùî,^î0’î5œî8"ï(¢îÍîØî†î4îâï&üî šîÍî*î)Ùî,^î0’î5œî8"ï%Vî¤î¯î4îâî‘ï#±î šîÍî*î)Ùî,^î0’î5œî=,î?²ï" î¤î¯î]î îîÄï eî šîÍî*î)Ùî,^î/»î4ÅîÛï(î¤î¯î]î îîÄï‚î šîÍî*î)Ùî,^î/»î3îî;~î?²ïÝî¤î¯î]î îîÄï7î šî¤îî)Ùî,^î0’î4ÅîÛï‘î{î†î4îâîíî ›ïëî šî¤î)Ùî,^î/»î2@î5œî8" ÿÿ}œ4`m$€î ìï 5þ=$ÿ}Ð`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2121UsingAssemble22.8.3UsingAssembleInordertouse,itishelpfultoknowthefollowingthingsabouthowcompiledcodeisrun.Allvariablebindingsandtemporarypointersarestoredontheparameterpushdownstack(addressedbyindexregister).Controlinformationisstoredonthecontrolpushdownstack(addressedbyindexregister).Afunctioncallproceedsasfollows:1.Thecallingfunctionpushestheargumentvaluesontheparameterstack.2.Thecallingfunctioninvokesaroutinethatadjuststhenumberofargumentsiftoofewortoomanyweresupplied,andbindsthearguments.Bindingusuallyimpliesthecreationofabasicframe.3.Thenthecalledfunctionisrun.Theargumentsinthebasicframearereferencedrelativetoindexregister,e.g.,1addressestherstargument.However,itisbettertoreferencevariablesinlessimplementationdependentways,suchasor.Thecompilerwillthengeneratethecorrectcodewhetherthevariableisboundlocally,isafreereference,isa,etc.Theparameterstackmaybeusedfortemporarystorageofpointers.Bothhalvesofawordontheparameterstackmaybepointers.Onthecontrolstacktherighthalfofawordmustbeapointer,theleftanon-pointer.Anythingelsecancausethegarbagecollectortofail.Fortemporarystorageofunboxednumbers,thefollowingmacrosareprovided:``Pushes''thenumberreferencedby.maybeanylegalcodeaddresseld,forexample:,,``Pops''themostrecentnumberto.Whetherabasicframeiscreatedforaoropenlambdadependsonwhetheranyofthevariablesarespecvars.22.18(HRRZ1,0(1))))(CDR1(NIL(*CDROFAC1TOAC1)(HLRZ1,0(1))))(CAR2((AC)(*CAROFACTOAC)(HRRZAC,0(AC))))(CLL((NAMN)(*CALLFNWITHNARGSGIVEN)(CCALLN,'NAM)))(LCLL((NAMN)(*LINKEDCALLWITHNARGS)(LNCALLN,(MKLCLNAM))))(RET(NIL(*RETURNFROMFN)(POPJCP,))(PUSHP(NIL(PUSHPP,1)))(PUSHQ((X)(*PUSHQUOTE)(PUSHPP,'X)))]'OPD)ASSEMBLEPPCPVP(VP)(CQ...)(VAR(...))GLOBALVARASSEMBLE(PUSHN)ASSEMBLE(PUSHN1)(PUSHN=0)(PUSHN@2)(POPN)PROGADDRADDRADDRADDRADDRyï0/îCjï Çî ìÿ}`m$|ïb'î$êî(Üï@Ëî ìîiî\xïNî@8îA’îEIîG€ï î ìî{îÿîîîî!Œî#ýî(¿î,Bî.³î2î4óî6¾î7ûî;”î? îAîBKîG€ïyî ìî ^î ‡îFîŽîœîPî Ùî$‹î&èî,î1Žî3;ïtî ìî ”î1îßî–îBî%Eî'¢î4ëî9™î;ëïoî¦ î¼î Bî%’ î,yî2 î7,î:VîEî?”îA÷îCÕîFšïOYî¦îŽî 2î"Þî;Óî@YîB¹îH&ïM³î,îîeî"Ïî' î'çî*œî,ùî2cïJ®î¦î_î )î#‚î'¢î-¥ î47î6”ïG©î ìî ¶îmîôî¡î î°î]î »î&È ïD¤î ìîFîËîî†îî$î"aî$€î'î,Þî.°î12î4Ñî8¨î;‚î@ÏîB¡îFÐïBþî ìî TîÔîÁîŽîÒî!\î&Xî(Ìî,¬î.î3wî7@î8¬ î?®îE¼îG€ïAXî ì îh îîÇî$îhî!4î(Iî*òî,žî/Iî17ï>Sî ìî £î–î½î‰îôî¹î!î# ï;Nî ìî ¨î wî î î!sî&î(Cî+µî0œî4ßî:Jî<©î@FîBýîFšï9¨î¤î€î*îïî›îøî*Ðî-Ðî0Bî21 î8îî¯îIï6£î ìî Ðî†îLî„îî�îñî$–î(×î* î0Ðî3<î7ëî?yî@dîAÝîG¢ï4ýî ìîî•îsî÷î!Mî"¡î%cî8(î=øî?:îAÜîFÅï3Wî ìî Iîîxî0îgîî#�î&Eî'¯ î.Xï([î ìî ±îýîÐî¶î¤îhî´î²î!Vî#«î&bî,~î."î0 î6%î7Éî: îAPîCðï#±î ìî êî;îÇî îÍîÅî""î&Lî(î-¹î/fî51î8øî;¡ï «î¦î³îî ·î#Êî%vïî¦î³îî ·î#Êî%vïûî¦îãî�îíî%Wî'ïPî¦îãî�îíî%Wî'ï¥î¦î¤îî#kî%#ï úî¦îî ÷î#Tî(¾î*vïî(ÿ}$`m$’xï\Aî ìîöîÒîiïUªî <î%Gî*Qî,Öî-®ïR¤î ìî\ïOYî(Ðî/‰î2åî6Bî8ÇïM³î¦î$†ïJ®î ìî¶ïD¤î î¥ïBþî@íïAXî#‘ï;NîÅî"�ï9¨î ìî#“îBIï6£î&Qî=Ëï4ýîÈî*ñî.Mî2€îC¢ï0Rî ìï.¬î ìî qï-î ìîîî4ï+aî ìî qî*îï([îNï&¶î ìî Hî*î]îhï «î ìî Hî"oï¦î ìîöîØî]îâïî"oïûî ìîöî‡ïöî ìîî*îØî†ïPî‡ïKî ìî Hî{ï  î ìîS!ÿ}$ `m$Îxï\AîÍîTî#î€ïZ›î0Ìî;Öî<¦ïXõî¦ïWOîtî3#ïR¤î¤ïR;î�ïR¤îjïR;îSïPÿî4¬ïP•î5•ïPÿî:ÍïP•î;¶ïJ®îÍî¼!ÿÿÿ}D`m$JÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿInterforkCommunicationinInterlisp-10PutstheunboxedvalueofinAC1.GetstheoatingunboxofAC1.Tocallafunctiondirectly,theargumentsmustbepushedontheparameterstack,andmustbeupdated,andthenthefunctioncalled:e.g.,andisequivalentto:22.9INTERFORKCOMMUNICATIONININTERLISP-10Thefunctionsdescribedbelowpermittwoforks(oneorbothofthemInterlisp-10)tohaveacommonareaofaddressspaceforcommunicationbyprovidingameansofassigningablockofstorage[Function]Createsablockinsize(512wordsperpage).Valueistheaddressoftherstwordintheblock,whichisamultipleof512sincetheblockwillalwaysbeginatapageboundary.Ifnotenoughpagesareavailable,generatestheerror.Tostoreanumberintheblock,thefollowingfunctioncouldbedened:Someboxingandunboxingcanbeavoidedbymakingthisfunctioncompileopenviaasubstitutionmacro.[Function]releasesablockofstoragebeginningatandextendingforpages.Causesanerrorifanyoftherangeisnotablock.Valueis.22.20(CQ(VAGX))X(FASTCALLFUNBOX)SP(CQ(CARX))(PUSHP)(*stackfirstargument)(E(PSTEP))(PUSHQ3.14)(E(PSTEP))(*stacksecondargument)(CLL(QUOTEFUM)2)(*callFUMwith2arguments)(E(PSTEPN-2))(*adjuststackcount)(CQ(FUM(CARX)3.14))guaranteednottomoveduringgarbagecollections.(GETBLK)pagesILLEGALORIMPOSSIBLEBLOCKNote:theblockcanbeusedforstoringunboxednumbersONLY.(SETBLOCK(LAMBDA(STARTNX)(CLOSER(IPLUS(LOCSTART)N)X]Note:GETBLKshouldbeusedsparinglysinceseveralunmovableregionsofmemorycanmakeitdicultorimpossibleforthegarbagecollectortondacontiguousregionlargeenoughforexpandingarrayspace.(RELBLK)ILLEGALORIMPOSSIBLEBLOCKNNADDRESSNADDRESSNADDRESS|ïb'î«î#u î-Hî.é î4:xï\Aî¦î³îî"¼î&cî)uî+"ïW–î¦îêîGî"8î&xî(0ïT�î ìî BîüîVîüî‚îî$êî(€î*¡î/—î1Íî4\î; î?îDXîGîïRëî ìî™îMîqîÎîCî!°ïBþî ìî ¡î î´|ï8Õî ìîiîO î%Øî'ò î/ùxï4pî ìî Ùîêî'îHî!Íî$Žî( î+Zî-5î0†î2Vî5ô î;]î=Ñî?–îBòîD2ï2Ëî ìî Øî†îaî î; î"Ûî$Ëî*ûî,î0Pî1þî7Õî8ôî<¦î>Tï. îC5 ï,zî¦î¶î î'eî)<î,î/Gî3{î6î:Ùî>÷î@�îCîH&ï*Ôî¦î îÔî bî"î$|î(›î,­î. î/Qî4Îî6Žî9)î<¡î?îBËîE|ï).î¦î}î$î\î!¯î(�î* î,¢î1—î5nî7Ï î=ïîDîFnï'‰î.Vï!~î ìî îjî“îºîgîÄîÙî 6î&Cî+·î/î1nïtî ìî íî¨îŒîÔîŒî ©î%ÿî((î-;î0 î5­î;î>¬îAîBn ïÎî ìïîC5 ïxî¦îîîXî"Wî$Pî)@î/èî8 î;îA“îE¿ïÒî¦îCî5î8àî:Dî<æî>¢îAîDÏîF=îH´ï -î¦îæîÚî&Çïî( ÿ}t`m$®xï\Aî ìî Hî{î(ïY;î ìîSïT�îAôïOæî ìî Hî{ïN@î ìîíî!rî&}î+‡ïLšî ìî qïJôî ìîÍïIOî ìî qîíî!rî&}î,^ïG©î ìîîî4îíî!rî%¦î)î-6î.ä ïFî ìî qî*îîíî!rî'Tî,^ï?ùî ìî Hî{î¯î4{ï2ËîBø ï1%î ìî Mî ñînî²îà xï. î ìî�{ï,zî#‰xï'‰î¦î_î ä î*"{ï$ƒî ìî µîÿî¦î1îÿî î3î!®î'î,€xïyî ìîSî îíî ›î# î)Ùî/»î3îî9ÐîeîB îC\îH&ï#î ì î^îƒîÍîÞîIî ìî#’î$Æ î+î/¡î3î7¹î9Þî@`îCðxïî ìîðïÒî!¨î(aî*æ î4$"ÿÿ}t\`m$*xï. î¤ï,zî!ñïî¤îïxî1ÁîDï -î!D"ÿÿÿ}Ð`m$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222324222324INTERLISP-10SPECIFICS22.10SUBSYSThissectiondescribesafunction,,whichpermitstheusertorunaTenex/TOPS-20subsystem,suchasSNDMSG,SRCCOM,TECO,orevenanotherInterlisp,frominsideofanInterlispwithoutdestroyingthelatter.Inparticular,willstartupalowerexec,whichwillprinttheoperatingsystemherald,followedby.Theusercanthendoanythingatthisexeclevelthathecanatthetoplevel,withoutaectinghissuperiorInterlisp.Forexample,hecanstartanotherInterlisp,performa,runforawhile,typeacontrol-Creturninghimtothelowerexec,RESET,doaSNDMSG,etc.TheuserexitsfromthelowerexecviathecommandQUIT,whichwillreturncontroltointhehigherInterlisp.Thuswith,theuserneednotperformatosavethestateofhisInterlispinordertouseaTenex/TOPS-20capabilitywhichwouldotherwiseclobberthecoreimage.Similarly,providesawayofcheckingoutaleinafreshInterlispwithouthavingtocommandeeranotherterminalordetachajob.Whilecanbeusedtorunanysubsystemdirectly,withoutgoingthroughaninterveningexec,thisprocedureisnotrecommended.Theproblemisthatcontrol-Calwaysreturnscontroltothenexthighest.ThusiftheuserisrunninganInterlispinwhichheperforms,andthentypescontrol-CtothelowerInterlisp,controlwillbereturnedtotheexecabovetherstInterlisp.Iftheuserelectstocallasubsystemdirectly,hemustthereforeknowhowitisnormallyexitedandalwaysexitfromitthatway.Startingalowerexecdoesnothavethisdisadvantage,sinceitcanbeexitedviaor,i.e.,thelowerexeciseectively``errorsetprotected''againstcontrol-C.[Function]If=,startsupalowerexec,otherwiserunssystem,e.g.,etc.isthesameas.Control-Calwaysreturnscontroltonexthigher.NotethatmorethanoneInterlispcanbestacked,butthereisnobacktracetohelpyougureoutwhereyouare.andprovideawayofspecifyinglesforinputandoutput.canalsobeastring,inwhichcaseatemporaryleiscreated,andthestringprintedonit.maybe,,or.isequivalentto,exceptwhenisahandle(seebelow)inwhichcaseisequivalentto.Thevalueofisalargeintegerwhichisahandletothelowerfork.Thelowerforkisresetunlesstheuserspecicallydoessousing,describedbelow.IfisgivenasitsrstPOPonTOPS-20.Interlispisexitedviathefunction,TECOviathecommand,SNDMSGviacontrol-Z,andEXECvia.Theforkisalsoresetwhenthehandleisnolongeraccessible,i.e.,whennothingintheInterlispsystempointstoit.Notethattheforkisaccessiblewhilethehandleremainsonthehistorylist.22.21SUBSYS(SUBSYS'EXEC)@SYSINSUBSYSSUBSYSSYSOUTSUBSYSSYSOUTSUBSYSEXEC(SUBSYS'LISP)onlyQUITPOP(SUBSYS)EXEC(SUBSYS'SNDMSG)(SUBSYS'TECO)(SUBSYS)(SUBSYS'EXEC)EXECSTARTREENTERCONTINUENILSTARTNILCONTINUESUBSYSnotKFORKSUBSYSLOGOUT;HQUITFILE/FORKINCOMFILEOUTCOMFILEENTRYPOINTFLGFILE/FORKINCOMFILEOUTCOMFILEINCOMFILEENTRYPOINTFLGFILE/FORKyïNZî1Rï<�îÃïHî5†ïiî ìïpî ìï Çî ìÿ} `m$"|ïb'î! î)î*òï\8î ìîixïWÓî ìî î³î¢îÖî#½î$¤î(»î-·î0 î3#î4Ûî7{î8° îAîBþ ïV-î ìî Mî,î„îÁî"¬î$¡î(î-P î3\î6òî;#î=î?/îDÖïTˆî ì î«î î|îa î,fî/'î2Lî4tî5´î9“î= îABîDîG€ïRâî ìîîŽî1îÙî!³î"Õî%´î(³î+Eî.qî0î63î7Óî:{î=œî@èîC¼îE´îHFïQ<î ìî <î£î3î-î«îÏî$ î*î,¯î2pî4Rî6Ïî9Ïî>É îDŠïO–î ìî^îOîùîJî‰î®îÑîî#²î%Iî+bî.Mî0î2„î6`î9ëî?_îAyîB¸ïMñî ìî ¬î…î€î±îîzîEî"`î$Ÿî'î-_î3î7î9½î=ìîBžïLKî ìî ³î*î� î×îlî$©î%Ÿî(î+(î.œî1)î6–î=‚î?JîBeîDÝîH&ïJ¥î ìî î•îDî÷î¦îîG î$¥î&‹ î,Èî0Ôî5î;'î@îByîE}ïHÿî ì îÅî\î’îtî!8î&üî)|î0Mî2«î4eî5›î9î>˜îC¬îH0ïGZî ì îîî�îQî"´î#ÝïDUî ìî»î[îaî°îtî î"Óî)qî.Öî3ôî7Ñî=î?! îFnïB¯î ìî ©îDîÍî^ î!+î$î)¼î+Eî./î2Òî4qî8ðî=½îB‰îDUîFÐïA î ìîœî‘î%îžîî$î¨î$óî&ûî,ˆî.Nî2qî4zîF-îG(ï?cî ìî ÿîî#î“î0î}î4 î#óî(‘î+)î-î2Žî4+î6xî9î=mî?»îBk îH\ï=¾î ìî JîAîþî¬î5î^îæî$/î&î)„î/gî3#î6&î7{î8æî>²îBÇîE|ï<î ìî •îúîOîï9î ìîîNîî?îuîñî >î"æ î+gî.àî0>î5Òî7Êî;èîBîFfîGKï7mî ìî Iîî'î’ î î à î'‚î,î0¾ï4hîC5 ï2Âî¦î î$Õî%Üî)™î+Õî-*î1î4Âî;îEï1î¦î(Lî5Ðî@mîBîD‹îH0ï/vî#jî$pî)vî*õî/Uî4î8°î:\î=gîE�îFjï-Ñî¦îpîÿî! î#Èî);î+Âî-¯î2áî5^î8âî:Kîî+î0fî1Ôî4ïî6ë î=¡î@»îC<îG(ï'€î¦î#ñî&|î)Hî+8î,cî0�î2>î6Jî97î:bîAîCTîDÀï%Úî¦î[î¹î ‹î%[î'`ï"Õî"¥î%°î+Ýî2¤î3Šî<î@ îA} îH0ï!/îÚîåî!`î,»î.Uî/­î4_î7Xî< î=æîBîHsï‰î¦ îOî&´ï„î ìî îîÁî`îøîMîÞî#£î'Úî)qî*Æî/vî1Oî3Ùî7Íî;Ìî>ÏîBÂîEåïÞî ìî 7î_îÅîÄ î¶î ìî"·î*™î+}î1ªî7;î>[î?ÎîC‡îE<îGïî îMîQîZïî î†îïîî;î–î%î%íî*Kî,„î.ßî6çî7Àî>‹î@ÅîEhîG(ï „î ìîBîÙï ]î î áîÏî1îòî-îÖî+î"¥î$î&î*: î0Åî3Pî6ùî<î=¦î?úîEfï Úî ìî î¸î�îîÏî,î"î� î$Çî(xî*Õî/Xî4~î6ƒî8àî=mïî(!ÿÿ} ¬`m$,îCáï4hî ìî3dï2Âî!xî>Uï1îÚî!“î)^î0î9ï/vî¦î_{îA²xï"Õî'©î,Ãî5Wî<õï!/î¦îE:ï‰îüï„î¥{îG|xïÞî&eî8Äïî î58ï „î}"ÿÿÿ}¸ì`m$ˆxï4hî¤î²îKîú î(ôî,Kî2|ï2ÂîSî`ï)&î¦î"8 ï'€î�ï"Õî¦îýî!.ï!/î%Aî)Oî ìï[þ=$ÿÿ} ¤d`m$>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ25262526JFNFunctionsinInterlisp-10argumentthevalueofapreviouscallto,itcontinuesthesubsystemrunbythatcall.Forexample,theusercando,loaduptheTECOwithabigsourcele,massagethele,leaveTECOwith,runInterlispforawhile(possiblyincludingothercallsto)andthenperformtoreturntoTECO,wherehewillndhisleloadedandeventheTECOpointerpositionpreserved.NotethatiftheuserstartsalowerEXEC,inwhichherunsanInterlisp,control-C'sfromtheInterlisp,thenfromtheEXEC,ifhesubsequentlycontinuesthisEXECwith,hecanreenterorcontinuetheInterlisp.Notealsothatcallstocanbestacked.Forexample,using,theusercanrunalowerInterlisp,andwithinthatInterlisp,yetanother,etc.,andascendthechainofInterlispsusing,andthendescendbackdownagainusing.Forconvenience,continuesthelastsubsystemrun.,,,andareall(page8.19)whichperformthecorrespondingcallsto.isawhichperforms,therebycontinuingthelast.[Function]Acceptsavaluefromandkillsit(RESETinTenexterminology).Ifissubsequentlyperformed,anerrorisgenerated.killsalloutstandingforks(fromthisInterlisp).22.11JFNFUNCTIONSININTERLISP-10JFNstandsforJobFileNumber.ItisanintegralpartoftheTenexlesystemandisdescribedin[Mur1],andinsomewhatmoredetailintheTenexJSYSmanual.InInterlisp-10,thefollowingfunctionsareavailablefordirectmanipulationofJFNs:[Function]ReturnstheJFNfor.Ifnotopen,generatesaerror.=,,,orasdescribedindiscussionof.Forexample,willwriteabyteonale,whilewillreadonebyte.[Function]Setsupa``long''calltoGTJFN(seeJSYSmanual).isalenamepossiblycontainingcontrol-Fand/or.isthedefaultextension,thedefaultversion(overridenifspeciesextension/version,e.g.,).isMustbetheexactsamelargenumber,i.e.,.Notethatiftheuserneglectstosetavariabletothevalueofacallto,(andhasperformedaninterveningcallsothatwillnotwork),hecanstillcontinuethissubsystembyobtainingthevalueofthecalltoforthehistorylistusingthefunction,describedinpage8.16.Theisdenedtosaveitsvalueonsothatsubsequentcommandswillrestartthesameexec.22.22SUBSYS(SETQSOURCES(SUBSYS'TECO));HSUBSYS(SUBSYS'SOURCES)QUITSUBSYSSUBSYSSUBSYSLOGOUTSUBSYS(SUBSYST)SNDMSGLISPTECOEXECLISPXMACROSSUBSYSCONTINLISPXMACRO(SUBSYST)SUBSYS(KFORK)SUBSYS(SUBSYS)(KFORKT)(OPNJFN)FILENOTOPENNILINPUTOUTPUTBOTHOPENP(JSYS51Q(OPNJFNFILE)BYTE)(JSYS50Q(OPNJFNFILE)NILNIL2)(GTJFN)FOO.COM;2EQSUBSYS(SUBSYST)SUBSYSVALUEOFEXECLISPXMACROLASTEXECEXECFORKFORKFILEACCESSFILEFILEACCESSFILEEXTVFLAGSFILEEXTVFILEFLAGSyï\¤î(óï@îMïGî ìï …î ìÿÿÿ}`m$|ïb'î ·î#ãî*<î+Ý î1/xï\:î ìî,î¥îgî:î~î$î!Èî(›î+[î,Ìî3 î5…î<(î>Øî@îîCÕîG4ïZ”î ìî¾î!îî«î2î2õî6î8î:î>äîBîC0îE’ïXïî ìî ÉîEîËî©îWîàî$Ðî%Õî(’î.0î0”î5î:þîA5îDúîH0ïWIîöîæî�î£î)¨î+Hî/eî1î5°î9·î;™î>5î@þîC!îEfïU£î ìî ¡îäîAî¢îfî £ ïRžî ìî jîAî¬îîî²îæî¸î$qî&)î*>î,8î/[î1U î7/î;Òî>9îA¨îD ïPøî ìî/î²î/îýî|î‹ î'ßî.#î0âî5Xî=šî>•î@¤îCMîHïORî ìî�îê ïLMî ìî qîMî*îHî§î Bî"Cî'×î*‘î0sî96î:$î<“î?›îB6îDÜîFïJ§î ì îØî¦îîæ îÒî"2î'±î*±î-€î2î4ˆî8Tî:% î@7îIïIî ìî ¡îÄîîFî î³î(dïEüî ìî • î�î#Âî&î(�î/$ïB÷îöîGî—î‹îQî!»î-›î1pî4ìî9î>yî@ï ïAQî ìî îÁî=î±î%Öî)éî80î9î> îDùîG_ï?¬îöï<¦îC5 ï;î¦îùîWî"3î+‘î.{î1›î3&î8Úî:¼î? îH\ï9[î#:î$¬ î,é î4 î5ÿî9vî:é ï7µî¦î‘î î#îî'gî+Dî-ã |ï0’î ìîiî–î‘î« î%²xï,-î ìî :î�îðî·î´î 2î!Ðî#cî%yî*œî-¥î/…î2 î6\î8Õî=tî@QîAäîH0ï*‡î ìîØîˆî0î‘îî àî"ˆî$áî)î,³î2î3ã î9Lî;ƒî=ÜîCäï(áî ìî =îóî.î î lî"$ï%ÜîC5 ï$7î¦î7îòî#vî(Èî*î/yî2Jî6†î<æï"‘î¦î Ôî$¹î*î0 î15î7Iî9.î?ŒîAq îH&ï ëîÚî£î:î=Çî@^îCÇîDÝîGÙïEî¦îÏîxî<>î>çîAÿîD¨ï@îC5 ïšî¦î’î­îáî"bî$õî&­î+îî.Ãî2î;Éî=>î>rî@ÎîD•ïõî¦ î‰î#,î$Æî)˜î1{î3î5¡î:u îB¬îE9ïOî¦î_ î"ûî'�î,Õî8,îB‘îHsïÞî î¹î¼î.îÈîVîÎî#fî'¿î(¯î,6î/î0Šî2ûî6î;Lî= î?<î@yîE¿îG€ï[î ìî ˜îUî„îîÐî±îåî ^î'!î) î0Rî2áî4©î@kîCîE“ïÙî ìî ÏîLîÞîsîî�î!oî'|î)Îî-hî/î1eî3âî;î=4î?†îDîF7ï Vî ìî Iî î|î¡î Mî#‘ï î î�îÚî ®î"Jî%9î'î*•î3´î5dî8 îBþï ™î ìî •îËî(î¢ïî(!ÿÿÿ}``m$”xï\:î#‘ïZ”îµî¿î%xî,1ïXïî#"ïWIî ìîéî!¢ïPøî /î8�ïLMîî4,ïJ§îC÷ïIî#ZïEüî²îkïB÷î ìîêî;îXî#Á ïAQî·î¦îâ î/Éî6‚ï?¬î ìï<¦î ìîEï;î%Íï9[î¦î!×îAÉîG«ï%Üî ìîÐï$7î>mîB îEýï"‘î"4î%Îî+î30ï ëî¦î$÷î*î-^î4î9!ïEî)î$4î'�î.Iî3Tî6°î: ï@î ìîaïOî;ïÞî&ï[îÅî7zî>3ïÙî5ƒï Vî¾ï î Øî§ î,ˆî?/"ÿ}hl`m$Âxï<¦îÍîŒï9[î_îï%Üî¤î>î ï$7î&î+ßï"‘îBîï@îÍîfî½îuîÓïšî8�ïõî.QîA!ïOî$OîDîFkî ìï9þ=$!}Ô@`m$LÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿINTERLISP-10SPECIFICSasdescribedonpage17,section2ofJSYSmanual.andmaybestringsoratoms;andmustbenumbers.ValueisJFN,oronerrors.[Function]Releases.releasesallJFN'swhichdonotspecifyopenles.Valueofis.[Function]Converts(asmallnumber)toalename.iseither,meaningformatthelenameaswouldorotherInterlisp-10lefunctions,orelseisanumber,meaningformataccordingtoJSYSmanual.Thevalueofisatomicexceptwhereenoughoptionsarespeciedbytoexceedatomsize.Inthiscase,thevalueisreturnedasastring.isanoptionalstringpointertobereused.Inthiscase,thestringcharactersarestoredinaninternalscratchstring,,sothatasubsequentcalltowilloverwritethecharactersreturnedbythisone.Thevalueofwhenissuppliedisalwaysastring.ThefollowingfunctionisavailableinInterlisp-10forspecializedleapplications:[Function]Opens.isanumberwhosebitsspecifytheaccessandmodefor,i.e.,correspondstothesecondargumenttotheTenexJSYSOPENF(seeJSYSManual).Valueisfullnameof.Therstargumenttocanalsobeanumber,whichistheninterpretedasaJFN.doesnotaecttheprimaryinputoroutputlesettings,anddoesnotcheckwhethertheleisalreadyopen-i.e.,thesamelecanbeopenedmorethanonce,possiblyfordierentpurposes.Notethatforalmostallapplicationsthefunction(page6.1)providesamoreconvenient(andimplementationindependent)wayofopeningles.22.12DISPLAYTERMINALSThevalueofthevariableindicateswhethertheuserisrunningonadisplayterminalornot.isusedinvariousplacesinthesystem,e.g.,,,etc.,primarilytodecidehowmuchinformationtopresenttotheuser(moreonadisplayterminalthanonahardcopyterminal).isinitializedtothevalueof,wheneverInterlispis(re)-entered,andafterreturningfromasysout.[Function]Valueisifuserisonadisplayterminal,otherwise.InInterlisp-10,isdenedtoinvoketheappropriatejsystochecktheuser'sterminaltype.22.23NIL(RLJFN)(RLJFN-1)RLJFNT(JFNS)NILOPENPJFNSMACSCRATCHSTRINGJFNSJFNS(OPENF)OPENFOPENFOPENFILEDISPLAYTERMFLGDISPLAYTERMFLGPRETTYPRINTHELPSYSDISPLAYTERMFLG(DISPLAYTERMP)(DISPLAYTERMP)TNILDISPLAYTERMPFILEEXTVFLAGSJFNJFNJFNAC3STRPTRJFNAC3AC3STRPTRSTRPTRFILEXFILEXFILEXFILE|ïb'î! î)î*òxï\:î¦îTîzî!î$Äî'î+šî,Îî.‡î2:î:ãî@•îC—îE‡ïZ”î¦îhî;î&`î)Åî+³î1âî5Õî7?î:½î?‰îA�ïW�îC5 ïUéî¦î¢î)Äî.÷î1î5Bî9zî;­î>MîCîF°ïTDî¦îšî" î$JïQ>îC5 ïO™î¦î 6î!Õî%mî+ î,µî-Üî0+î7'î8�î>ûî?ÔîEfïMóî¦î8î¾î ®î"Žî+Øî-Ïî1Ÿ î7î9î;¥ îB7îD-îGîH´ïLMî¦î î"®î'î-Rî.øî2£î8 î:Øî>xîDîEfïJ§î¦îî Pî%Zî*Yî,Ïî2•î7™î9kî>îA±îELîG>ïIî¦îêîGî îî"Xî'îî)›î*ÃïEüîþîOî $î%hî)!î-Ìî/_î15î6î7Åî:Jî=zî?½îCv ïDWî¦îäîñîŠî!eî&cî*éîî>íîA¥îB» ïB±î¦î î�î")î('î*v î0Íî6Tî8?î:Ïî=öî@½îDTïA î¦î Éî"4î'¿î))î-Šî.²ï>î ìî ÁîÎîCî­îbî! î&xî([î*— î1uî3Ç ï;îC5 ï9[î¦îäî!�î#1î$“î)óî.Wî1/î6î8—î<Úî?ÈîCÔîIï7µî¦îž î#<î$íî'Oî+áî2 î3»î6î:Lî>îC\îF+ï6î¦î´î!§î#î%šî)Vî-Çï3 î¦î‹î[î#�î*î,«î/…î1ƒî2»î8Nî¢îCîîF°ï/¿î¦îîìî#0î%ˆî'Ôî)9î.î1mî2eî4òî7Jî:¿î= î?ŽîAxîFMï.î¦îÉîeî#­î%èî+rï+î ìî Zî!îWî³îœ î &î"î/&î2Ýî5Œî;î<5î?¿ îF¯ï)nî ì îÁ î"î÷î ¯î%÷|ï"Jî ìîiîxïæî ìî ¼î]îîhî%×î+}î0Áî3î6 î7pî<�î>œî?ÀîDiï@î ìî ³îîwîµî!gî&0î*Jî+üî._î35î?XîFîFýïšî ìîûîÁî1îKî6 î$Òî&—î+€î-Eî/»î2Êî6ëî9î:Jî?îD�îGÙïõî ìî 1î‡îò î%î&¤ î-î.Úî1Tî5îB®îC®ïOî ìî`îÊî^î¦î[î”î$—î'ûî)$ïJîC5 ï¤î¦îíîXî! î$Uî&î(jî)æî.çî8w î@îB9 îG¢ïþî"ˆî$:î)iî+^î0î2 î:cî=Iî??îCeîF ïXî¦îïî("ÿ}´`m$0xïZ”î<€ïW�î ìîïUéî «î&�î'dïTDîQî#sïQ>î ìî%ïO™îï3 î%Kï1eîeï+î'îïæî• ï@îº î6 î@:ïõî¹ î6ë ïJî ì ï¤îªî5ïþî¦ ÿÿÿ}´Ä`m$jxï\:î7¥î=™ïZ”îßî!ðî$NïW�îÍïUéî]ïQ>îöîîëî8ïO™îoî4iî59ïJ§î4´î5ƒïEüî¦ïA îXï;îÍîfï9[î+îøîFHï7µî>ï6î+ ÿÿÿ}xH`m$Tÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ27282728TheInterlisp-10Swapper22.13THEINTERLISP-10SWAPPERInterlisp-10providesaverylargeauxilaryaddressspaceexclusivelyforswappablearrays(primarilycompiledfunctiondenitions).Inadditiontothe256Kofaddressspace,this``shadowspace''cancurrentlyaccomodateanadditonal256Kwords,caneasilybeexpandedto3.5millionwords,andwithsomefurthermodications,couldbeexpandedto128millionwords.Thus,theoverlaysystemprovidesessentiallyunlimitedspaceforcompiledcode.Shadowspaceandtheswapperareintendedtobemoreorlesstransparenttotheuser.However,thissectionisincludedinthemanualtogiveprogrammersareasonablefeelingforwhatoverlaysarelike,withoutgettingunnecessarilytechnical,aswellastodocumentsomenewfunctionsandsystemcontrolswhichmaybeofinterestforauthorsofexceptionallylargesystems.22.13.1OverlaysTheshadowspaceisaverylargeauxiliaryaddressspaceusedexclusivelyforanInterlispdata-typecalledaswappablearray.Theregularaddressspaceiscalledthe``resident''spacetodistinguishitfromshadowspace.Anykindofresidentarray-compiledcode,pointerdata,binarydata,orahasharray-canbecopiedintoshadowspace(``madeswappable''),fromwhichitisreferredtobyaone-wordresidententitycalledahandle.Theresidentspaceoccupiedbytheoriginalarraycanthenbegarbagecollectednormally(assumingtherearenoremainingpointerstoit,andithasnotbeenmadesharedbya).Similarly,aswappablearraycanbemaderesidentagainatanytime,butofcoursethisrequires(re)allocatingthenecessaryresidentspace.Thisisaccomplishedasfollows:Asectionoftheresidentaddressspaceispermanentlyreservedfora.Whenaparticularswappablearrayisrequested,itisbrought(swapped)inbymappingorthepagesofshadowspaceinwhichitliesontoasectionoftheswappingbuer.Thisprocessistheswappingoroverlayingfromwhichthesystemtakesitsname.Thearrayisnow(directly)accessible.However,furtherrequestsforswappingcouldcausethearraytobeoverlaidwithsomethingelse,soineectitisliabletogoawayatanytime.Thusallsystemcodethatrelatestoarraysmustrecognizehandlesasaspecialkindofarray,fetchthemintothebuer(ifnotalreadythere),whennecessarycheckthattheyhavenotdisappeared,fetchthembackiniftheyhave,andevenbepreparedforthesecondfetchtobringtheswappablearrayinatadierentplacethandidtherst.Themajoremphasisinthedesignoftheoverlaysystemhasbeenplacedonrunningcompiledcode,becausethisaccountsfortheoverwhelmingmajorityofarraysintypicalsystems,andforasmuchas60%oftheoveralldataandcode.ThesystemsupportstherunningofcompiledcodedirectlyfromtheSincecompiledcodearrayspointtoatomsforfunctionnames,andstringsforerrormessages,nottomentionthefactthatprogramsusuallyhavedatabase,whicharetypicallylistsratherthanarrays,thereisstillaveryrealandnitelimittothetotalsizeofprogramsthatInterlisp-10canaccomodate.However,sincemuchofthesystemandusercompiledcodecanbemadeswappable,thereisthatmuchmoreresidentspaceavailablefortheseotherdata-types.Initially64,512wordpages,butcanbechangedviathefunctiondescribedbelow.22.24residentMAKESYSThemainpurposeandintentoftheswappingsystemistopermitutilizationofswappablearraysdirectlyandinterchangeablywithresidentarrays,therebysavingresidentspacewhichisthenavailableforotherdata-types,suchaslists,atoms,strings,etc.swappingbueroverlayingSETSBSIZEyïQ¦î%©ï*bîcï‰î ìï Dî ìÿÿÿ}`m$|ïb'î" î$ö î*Hî,+ï\8î ìîiîð î÷îÚxïWÓî ì îUî�îSîÅîîÆî%Lî*zî.t î5¦î8*î?îCm ïV-î ìîÓî7 îàî�î#öî%’î'Þî+€î2î6êî:æî=tîCîGTïTˆî ìîØ îgîkî�î#Wî'Òî*pî.Lî0Pî6 î8bî:²î?îCûîFÅïRâî ìî „î0 îýîÍî Äî'î(¼î+Wî0î4¼î8˜î:þî?ÔîDSïQ<î ì îrî¬î^îšî"’ïN7î ìî3îúîÄî6îªî î%Üî'žî)¢î-Gî/î1Æ î9î:Éî=<î@õîG>ïL‘î ìî î&îãî«î$î%î îî#ô î,oî-³ î4—î95î;Œî?îDoîFÜïJìî ìîîš î î"1î#ëî&ãî(œî*Vî0Êî4gî7_î=eî@'îD«ïIFî ìî öî÷îæî�îxî³î ™î"P î*šî-þ|ïDáî ìîixï@|î ìî ýî(îî¼î îgî î%áî+î.ïî2d î9‰î;ÿî>)îCÙîFÐï>×î ìî êîîÏîÐî÷î×î!�î&î*;î+°î/®î2 î8±î% îEîFyï=1î ìîøîƒî îêî¾î! î$®î%Çî+Üî/›î4|î7úî]î@9îBbîCºîFXï9åî ìî5î*î5îuîsîÀî ¬î%öî)¿î/£î1´î4)î9Eî<áî?�îB»îDÁï8@î ìî¬î�îûîŠî!åî#óî*xî/Êî1€î39î5÷î7Vî9ÒîmîAîBØîG>ï4ôî ìî4 î}îÛîèî%ï+žî ìî î¥ îCî îtî î$Ïî&£î)î.jî3lî79î8À î@ÍîF]îH´ï)øî îî î' î Kî&çî*_î+½ î2Fî3�î4íî:î@™îB9îD'ï(Sî ìînîòîàî½îÔî#¬î%î)°î++î-Ãî1î2fî7%î9î;†îA»îELîFÆï&­î ìîÀî0î“î¦în î!î$ƒî(“î*õî/rî2ñî4Ðî9î;úî?„î@ôîCû ï%î ì îÐîî¿î! î#hî)ƒî-Xî1î3€î7î8Ìî:Çî@îC@ï#aî ìî !îîÒî¥îî§î…îSîbî"ýî$µî'uî+~î/î1*î5Âî9'î<î@€îBNîFxï!¼î ìî5înîLî¦îOî ®î"—î&²î*Tî. î1î3¢î7èî9òî<–îA—îF+ï î ìîîñîÊîäî4î´ î'¶î+4î.Çî2î3Ñî5=î8Wî<î>ÄîBîDïpî ìî 'î„îî‚î/îÕî2î$Ûî(`î* î+£î,Ìî2Vî5çî9 î;}î=Úïkî ìî ëîîîõî|îñî!Óî$Zî)Rî-óî0�î4î8•î:Ãî@îFAïÅî ìî/îóî°îî” î%œî+6î-î1Bî3î7§î=)î@îBeîD7îH0ï î ìî ãî¦îî�î«îlîXî"9î&¼î,Tî.½î3ûî5¿î;Ãî?îDîG€ï î îÚîåî=îYî î!Èî%Úî()î-±î2aî5)î9“î;áî?dîEªîH0ï�î ìîHî˜î6îõîõî!—î$Îî'Ãî+(î/&î1jî6Ýî9�î=�î@£îDùîHsïî ìî ‘î ÁîÔî�îKîØî"îÖî!:î$dî'î(Òî.æî1¹ î7"î9 î;œ îC®ï ˜î ìî †î…îgîðî’îrî “î&·î*&î,Úî.ôî2Û î:î=Âî?XîBOîFMï î ìîîÐî†îÁîGî!ãî$Úï Úî î0îzîÿîî�î!&î#î(î*ºî-î:Ÿî@Äïî(ÿÿÿ} `m$Ê{ïV-î-&xï6šî /{ï1ïî ìî ÊîPî^îîîÔî ;î&&î*“î,î-Ûî21 î8°î:oî@æîEï0Iî ìî ´îƒî¤îÌî#iî(Mî,—î1¿î5‚î9‰î;î>KîDîF_ï.£î ìî ãî¢î¼îtîŒîÐî!xï)øî ìî­ï(Sî Ô xï Úî2Œ ÿÿÿ}  `m$xî ìï{þ=$ÿ} $`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ293031293031INTERLISP-10SPECIFICSswappingbuer,andthefunctioncallingmechanismknowswhenaswappabledenitionisbeingcalled,ndsitinthebuerifitisalreadythere,andbringsitinotherwise.Thus,fromtheuser'spointofview,thereisnoneedtodistinguishbetweenswappableandresidentcompileddenitions,andinfactwillbetrueforeither.22.13.2EciencyOnceofthemostimportantdesigngoalsfortheoverlaysystemwasthatswappablecodeshouldnotexecuteanyextrainstructionscomparedtoresidentcode,onceithadbeenswappedin.Thus,theinstructionsofaswappablepieceofcodeareidentical(exceptfortwoinstructionsattheentrypoint)tothoseoftheresidentcodefromwhichitwascopied,andsimilarlywhenaswappablefunctioncallsanotherfunction(ofanykind)itusestheexactsamecallingsequenceasanyothercode.Thus,allcostsassociatedwithrunningofswappablecodearepaidatthepointofentry(bothcallingandreturning).Thecostoftheswappingitself,i.e.thefetchofanewpieceofswappedcodeintothebuer,isevenhardertomeasuremeaningfully,sincetwosuccessivefetchesofthesamefunctionarenotthesame,duetothefactthattheinstancecreatedbytherstfetchisalmostcertaintoberesidentwhenthesecondisdone,ifnoswappingisdoneinbetween.Similarly,twosuccessivePMAP's(theTenexoperationtofetchonepage)arenotthesamefromonemomenttoanother,evenifthevirtualstateofbothforksisexactlythesame-adicultconstrainttomeetinitself.Thus,allthatcanbereportedisthatempiricalmeasurementsandobservationshaveshownnoconsistentslowdowninperformanceofsystemscontainingswappablefunctionsvizavizresidentfunctions.22.13.3SpecicationsAssociatedwiththeoverlaysystemisadatatypecalleda,(typename),whichoccupiesonewordofresidentspace,plushowevermuchofshadowspaceneededforthebodyofthearray.,,,,,,,,,,,andallworkequallywellwithswappableasresidentprograms.istrueforallcompiledfunctions/denitions.[Function]Analogousto.Returnsifisaswappablearrayand,otherwise.Therelocatableinstructionsareindexedbyabaseregister,tomakethemrunequallywellatanylocationinthebuer.Thenetslowdownduetothisextralevelofindirectionistoosmalltomeasureaccuratelyintheoverallrunningofaprogram.Onanalyticalgrounds,onewouldexpectittobearound2%.Ifthefunctioninquestiondoesnothing,e.g.acompiled,itcostsapproximatelytwiceasmuchtoenteritsdenitionifitisswappableascomparedtoresident.However,verysmallfunctionsarenormallynotmadeswappable(see,page22.26),becausetheydon'tsavemuchspace,andare(typically)enteredfrequently.Largerprogramsdon'texhibitameasurableslowdownsincetheyamortizetheentrycostoverlongerruns.Thecostoffetchingisprobablynotinthemappingoperationitselfbutintherstreferencetothepage,whichhasahighprobabilityoffaulting.Thisraisestheproblemofmeasuringpagefaultactivity,anothermorassofuncertainty.22.25CCODEPSWPARRAYSWPARRAYPARGLISTFNTYPNARGSGETDPUTDARGTYPEARRAYSIZECHANGENAMECALLSBREAKADVISEEDITACCODEP(SWPARRAYP)ARRAYPNIL(LAMBDANILNIL)MKSWAPPXXXyïIøî*œïF¬îG—ï;jî+“ï î ìïˆî ìï Cî ìÿ} `m$"|ïb'î! î)î*òxï\:î ìîùîeîîuîéî#Iî*tî.³î2cî3‹î:3î@aîAËîE’ïZ”î ìî iîáî±î1îiîìîdîòî äî$íî'Åî,î-‹î/[ î6kî:jî=ñî@qîDgîH&ïXïî ìî ™î7îºîÖîHî î!î&‘î-Qî0î5hî;x îB¡îEnîG3ïWIîzî#îîôî/|ïRäî ìîixïNî ìî ±î’îî�î"î —î$:î& î)'î.î2Àî5“î8‰î?[îBÉîGjïLÚî ìîîóîŸ î3î#Ëî%´î+"î/ î2‰î4î7 î:¡î@~îCbîG€ïK4î ì îJîî5îãîzî 7î#€î%×î+gî02î2sî5" î<€î>î@€îDîH0ïIŽî ìî  îpîæî1î�î î",î#™î&[î,þî/Ëî5wî9Aî:‚îACîFÑïGèî ìîöîpî¤îGîñîKî!Fî#§î'1î*°î/î4üî6­î9Pî<ðî@ÄîDœîFŽïFCî ì îRîjîœîSî ûî$?î&�î)¨î+?î-œî18î2ïî6€î:2î>“îAG ïC=î ìî Øîºîˆîýî"îïî šî#î&–î(dî)¤î,¦î0Nî2î7Ôî;/î>î@�îEîFšïA˜î ìîOîýîg î î!zî$% î*Œî/'î0ßî3>î6¹î‚î@öîCTîG(ï?òî ìî °î&îèîËîAî¡î ~î"�î%î'Ýî+eî,èî1`î5ûî7Àî9Çî?îBÚîEOï>Lî ìî jîJî½îÖîøîvîùî¹î%â î,)î.æ î5`î:Ñî=»îAøîH0ï<¦î ìî dîîÚî4î¯îî–î"î$´î*%î+Úî1Bî4Žî5õî8[î<¹î?ðîA¯îDñîHsï;î ìîîØîMîEîiîk î!·î#_î&¿î(fî-;î1 î2óî5ºî8>î:(î?®îAîCÚï9[î ì îÇîi î1î bî$šî&‹ î,Éî3î4´ î<žî>BîC* ï7µî ìî”î�î½îæîî!H |ï3Qî ìîi xï.ìî ì îÎîÿîuî]îíî!qî"³î(Wî,dî4_î5Zî8ùîD_îEÓï-Fî ìî�îSîñîÂîî!7î$Gî)ßî-Ìî/�î4¦î8rî=Pî?¤îBîE¯îG€ï+ î ìîÚîëîüî"5î&oî-.î5›î>àîCðîIï)ûîöîÖîJî=îºî!Žî$}î'™î.Eî/öî5,îA\îBÊîE¯îGïï(Uî ìîäï%PîC5 ï#ªî¦înî%%î&,î,ºî/uî0àî2î8°î<5îBK ïŸî î î> îËîQî$¸î&çî(Dî+‘î1î2æî6Ìî:†î=OîBSîEsîG?ïî ìî3îõîhîAî,îžî$î&äî(¦î+[î.àî28î4 î;î<„î?îB²îDtïšî ì î]î îfîæîîÎî ÷î'î)_ î/wî5î7¿î;éî@4îA‰îC5îE$ïî ìïî î “îïîbî î•îÁî$(î&Úî(î;iî2îA~îDÀï Ôî ìîòîŠîA ïî(ÿÿÿ} 4`m$ŒxïWIî ìï.ìî-¦î<Ïï+ î ùî¸îÈîÙî#î'Mî. î6y î?½îDÎï)ûî ìî�î;Éï%Pî ì îï#ªî î?Bïî-øî4±î8 ïî(?!ÿÿ} @�`m$Jxï%Pî*ï#ªî+_î.î ìïúþ=$ ÿ} Ð`m$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSpecications[Function]Analogousto.Returnsifisorhasaswappedcompileddenition.[Function]Ifisaresidentarray,returnsaswappablearraywhichisacopyof.Ifisaliteralatomandistrue,itsdenitioniscopiedintoaswappablearray,anditis(undoably)redenedwiththelatter.returns.[Function]Theinverseof.iseitheraswappablearray,oranatomwithswappeddenitiononitsproperty.[Function]Allcompileddenitionsbeginlifeasresidentarrays,whethertheyarecreatedby,orbycompilingtocore.Beforetheyarestoredawayintotheiratom'sfunctioncell,isappliedtotheatomandthearray.Ifthevalueofis,thedenitionismadeswappable;otherwise,itisleftresident.Byredeningoradvisingit,theusercancompletelycontroltheswappabilityofallfuturedenitionsastheyarecreated.Theinitialdenitionofwillmakeafunctionswappableif(1)is,and(2)thenameofthefunctionisnoton,and(3)thesizeofitsdenitionisgreaterthanwords,initially128.[Function]Setsthesizeoftheswappingbuerto,anumberof.Returnsthepreviousvalue.returnsthecurrentsizewithoutchangingit.Note:Currently,thesystemlackserrorrecoveryroutinesforsituationssuchasacalltoaswappablefunctionwhichistoobigfortheswappingbuer,orwhenthesizeiszero.Therefore,shouldbeusedwithcare.22.26(SCODEP)CCODEPT(MKSWAP)(CCODEP)MKSWAP(MKUNSWAP)MKSWAPCODE(MKSWAPP)LOADMKSWAPPMKSWAPPTMKSWAPPMKSWAPPNOSWAPFLGNILNOSWAPFNSMKSWAPSIZE(SETSBSIZE)pages(SETSBSIZE)SETSBSIZEXXXXXXXXXXFNAMECDEFNN|ïb'î%Š xï\:îC5 ïZ”î¦înî%%î&î,Žî/Iî0³î2uî4èî6î;±îA© ïW�îC5 ïUéî¦î½îEî‹î"Ûî&Üî+¨î,îî3³î7Vî;}î=î>KîA·îDcîE\îHsïTDî¦îàîÙî dî,'î-¢î0ñî2Úî9î:–î?îAûîC5ïRžî¦îƒî8î�î ÷ î'÷î.î1î3{î=îB¤ïO™îC5 ïMóî¦î‹îGî&î(mî)çî-Þî/î5Íî9½î;Žî=ŒîAîD<ïLMî¦îÖîÚî%”ïIHîC5 ïG¢î¦îÿî î&»î*‹î,ûî.°î3êî8Uî=§î@¼îCîGãïEüîîîî ,î&Âî( î,¶î1Rî4�î7î;bî? îBîE‡ïDWî¦îOî' î(ªî-Äî/¥î26î5åî8Îî;`î@îA¹îDKîH&ïB±îî Zî!<î#Ÿî)Õî+Eî/ î62 î<¶î>î?‚îAûîGÃïA î¦î$Mî%òî+3î,Èî/î1âî4M î;%î?¶îAö ï?eî¦îXî@î[ î&î'¯î*¶î-î2Gî5î8ùî?#îG4ï=Àî¦îxîÃî"Yî)"î*£î5î91î:.î=î?KîAÉîE§îG€ï<î¦î9îÂî!Sî+î,î.Úî1î3™î6`î86î:-î@{îBîFºï:tî ‘î$òî)íï7oîC5 ï5Éî¦î{îÌîiî!î#eî)gî-pî/ùî0Èî1åî7î;Ùî<ÛîBîDSï4#î¦î%’î*@î,�î1bî4 î9î>êï1î¦îµ î"]î$Ìî)Tî,Êî0Jî5åî;?î=Œ îC¶îFöîH´ï/xî¦î(îÎîñî#’î)î-î.hî0Éî3î5Tî7ªî=²îBîCÕîG€ï-Óî¦îOîºî= î.î2{î4jî7£î:»ïî( }|`m$*xï\:î ìî|ïZ”î î+3ïW�î ìî|ïTDî#*î*»ïRžî7�ïO™î ìî*ïMóî!ïLMî!³ïIHî ìîñïEüî¦ïDWî qïB±î¦îƒïA îï?eî@Ôï=Àî,êî6«ï<î#vï:tî¦ ï7oî ì î{ï5Éî8«xï4#îÐ ï-Óî%ð!ÿ}|¨`m$jxï\:î¤ïZ”î-íïW�î¤ïUéîDîCŒîFúïTDî)ãïRžîAÌïO™îSïMóî'ïIHî{î´ï7oî*ï5Éî/"ÿ}$`m$:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ TIMESROMANþ¡GACHAþ¡CMSîþç CMRðÿ   TIMESROMANþ¡  TIMESROMANþ¡ CMSYêþ¡ªf ú<# ¼, P5 ? 4LHT°[ d ªm v–~¬„XŒ¢”äœ&£ © Ö´ ¶¾0Æ |Ò €Ý’ãj/æäÿÿ›�Â[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿChapInterlisp10.PRESSSANNELLASEPTEMBER 15, 1983 12:36:59