PROMPTREMINDERS--tobeperiodicallyremindedofthingsFile:PromptReminders.ttyRevised:Feb21,1983,andApr15,1984,byJonLWhiteOnemaywanttobeperiodically"reminded"ofimportantthingsbyamessagewhichisaggressively"winked"and"flashed"inapromptwindow(oronprimaryoutputforsystemswithoutbitmapdisplay,suchasInterlisp-10andInterlisp/VAX).Itwilldesistthewink/flash"hassling"onlyafterithasbeenacknowledgedbyuserresponse,orafterapre-setintervalof"hassling"timehaselapsed.SuchisimplementedusinganInterlisp-Dbackgroundprocess(orforthenon-Interlisp-Dsystems,thefacilityofPROMPTCHARFORMS).IftheMESSAGEgivenforthereminder(seedescriptionofthefunctionSETREMINDERbelow)isalistp,thenwhenthereminder"goesoff",thatlistpwillbeEVAL'dratherthananyofthe"winking","flashing",or"hassling"mentionedabove.InInterlisp-D,theglobalvariableREMINDERSTREAMholdsthewindow(or,indeed,stream!)thatthe"winking/flashing"istooccur;ifnotsetbytheuser,itwilldefaulttoPROMPTWINDOW.Afterthe"hassling"hascompleted,thewindow(ifindeedREMINDERSTREAMholdsawindow)willbeclosed,dependingonthevalueofCLOSEREMINDERSTREAMFLG.REMINDERSisafilepkgtype,sothattheymaybeeasilysavedonfiles,andsothatthegeneraltyped-definitionfacilitiesmaybeused.OnanyfilewhichusestheREMINDERSfilepkgcom,itisadvisabletoprecedethiscommandwithacommand(FILES(SYSLOADCOMPILEDFROMLISPUSERS)PROMPTREMINDERS)sincethispackageisnotintheinitialLisploadup.Wheninitiallydefiningareminder,itispreferablefortheusertocallSETREMINDERratherthanPUTDEF;butHASDEFistheacceptedwaytoaskifsomenamecurrentlydefinesa"reminder",andDELDEFistheacceptedwaytocancelanexisting"reminder".Inthefirstexamplebelow,theuserwantstoberemindedevery30minutesthatheoughttobeusingMAKEFILEtosavehiswork;inthesecondexample,hemerelywantstobetoldonce,atprecisely4:00PMtocallhome;inthethird,hemerelychecksevery10minutestoseeifthereisaprocesscalledLISTFILES.Examples:(SETREMINDERNIL(ITIMES3060)"HaveyouMADEFILErecently?")(SETREMINDER'WOOFNIL"Don'tforgettoinformwifeofdinnerplans.""8-Jan-834:00PM")(SETREMINDERNIL600'(PROGN(AND(FIND.PROCESS'LISTFILES)(addFREQ1))(addTOTAL1)))Functions:(SETREMINDERNAMEPERIODMESSAGEINITIALDELAYEXPIRATION)Thiswillcreateandinstalla"reminder"withthenameNAME(NILgivenforanamewillbereplacedbyagensym),whichwillbeexecutedeveryPERIODnumberofsecondsbywinkingthestringMESSAGEintothepromptwindow;ifMESSAGEisnull,thenNAMEiswinked;ifMESSAGEisalistp,thenitisEVAL'dandno"winking"takesplace."Winking"meansalternatelyprintingthemessageandclearingthewindowinwhichitwasprinted,ataratedesignedtoattracttheeye'sattention.ThefirstsuchexecutionwilloccuratPERIODsecondsafterpî êïc/î êïb6qî ðïb6î êï`Þî Áî ˜î oîFîîôîËî¢îî!—î$î&¡ î1Œî9î; î@°ï`Þî êï_†î ðï_†î êï^.îàîÖî.ï^.î êï\ÖîyîÖî2îŽî ˜î#ôî'Pî*¬î/¶î2;î6nî:§ï\Öî êï[~î ðï[~î êïZ&î ðïZ&î êïXÎî Áî ˜î oîFî¢îþî1î¶î; î)& î2cî4èî=NîC/îE´îEºïXÎî êïWvî ˜îPîZîß î%Êî-Yî0µî9î; î=NîC/îC5ïWvî êïVîËî'î¬îdî#Eî&¡î-Yî4î9òîA�îE´îEºïVî êïTÆî o îZî¶î)&î)ýî*Ôî-Yî1Œî7mî:É îDîD ïTÆî êïSn î'îZîdîéî#Eî'x î2cî4èî9îA�îDîD ïSnî êïRîôî¢îZîéî"n î+«î/Þî3:î:Éî; î?ÓîBXîB^ïRî êïP¾ îþîî� î&¡ î/Þî6–î9òî=Nî@ªîD ïP¾î êïOf îþî�îéî'xî)ýî8JïOfî êïNî ðïNî êïL¶î Áî ˜î oîFîËî'îßîéî#Eî&¡î.0î2c îüîBXîB^ïL¶î êïK^îy î�î"nî$óî&¡î,‚î0µî4èî8Dî?Óî?ÙïK^î êïJîôîþî1î;î"nî$óî*Ôî+«î1Œî5¿î9î; î>ü îGhïJî êïH® îþîƒ î Àî)&î.6ïH®î êïGVî ðïGVî êïEþî Áî ˜î oîFîË î¶îî$óî,‚ î9î>%îA�îGbîGhïEþî êïD¦îîÕîdî!—î$óî4èî7mî9òî?ÓîBXîDãïD¦î êïCNîFîËî'î1î¶îéî&¡î)& î4èî5¿î:Éî>% îF‘ïCNî êïAöîF îƒîßî Àî$î)ý î6–î; î=NîDîGhïAöî êï@žî oî'î�îî"nî'xî)ýî=Tï@žî êï?Fî ðï?Fî êï=îî Áî ˜î oîFî¬î1îßî!—î&¡î)&î-Yî1Œî4èî7mî=NîBXîDÝîDãï=îî êï<–îËî'î¬îßî;î$óî3: îî oîËîþîî;î!—î)ý î4î6–î9îA�îDîD ï;>î êï9æî¢îÕî�î Àî"nî#Eî),ï9æî êï8Žî Áî ˜î oîFî'î¶î#Eî'x î0µî>üî?ï8Žî êï76îôî'îßîdî Àî#Eî&¡î-Yî1Œî8Dî9î9òî>%îF‹îF‘ï76î êï5Þîyî'î�îî!— î*Ôî.0î1Œî5¿î8DîüîC/îGbîGhï4†î êï3.îPîî¶ î%Êî)&î/î1Œî4èîüîDîF‹îF‘ï/&î êï-Îî¢îÕîZîdîéî"nî'xî/î1Œî5¿î9î>%î>üîA�îDÝîDãï-Îî êï,vîËîZîßî Àî%Êî(Oî*Ôî/î4î6–î>üîDÝîGbîGhï,vî êï+îî'îþîƒîßî Àî#Eî)&î/î4î6–î=Nî?ÓîC/îE´îEºï+î êï)Æîôîyî'îßî À î)ýî*Ôî+«î,‚î4ï)Æî êï(nî ðï(nî êï'î Áî ˜î oîF î1î�î#Eî%Êî)&î.0î1Œî9 îB^ï'î êï%¾î ðï%¾î êï$fî Áî ˜î oîF î1î;î!—î'xî-Yî/Þî5¿î9òî%î@°ïî êï®î Áî ˜î oîFîîôîËî¢îyîPî'îþîÕî¬îƒîZî1îîßî¶îéî$óî(Uï®î êïVî ðïVî êïþî ðïþî êï¦î ðï¦î êïNî ðïNî êïöî Áî ˜î oîFîîôîËî¢îyîPî'îþîÕî¬îƒîZî1îîßî¶î�îdî;îîéî Àî!—î"n î+«î+±ïöî êïžî ðïžî êïFî Áî ˜î oîF î1îdî#Eî)ý î4è î>+ïFî êïîî Áî ˜î oîFîîôîËî¢îyîPî'îþî1îdî#Eî&¡î-Yî/ î8Dî%îC/îGbîGhï–î êï>î Áî ˜î oîFîîôîËî¢î'î¶î Àî&¡î,‚î/î5¿î8Dî>üîBXîGhï>î êïæî Áî ˜î oîFîîôîËî¢îZî�îéî%Êî,‚î/î5¿î8Dî=NîA�îE´îGhïæî êï Žî Áî ˜î oîFîîôîËî¢îZîßî!—î$î%Êî+«î/Þî2cî4èî:Éî>%î@ªîH?ï Žî êï 6î Áî ˜î oîFîîôîËî¢î¬î�îdî%Êî*Ô î4èî's).Returnsthename(noteabovewhenNILissuppliedforthename).(ACTIVEREMINDERNAMES)Noarguments;self-explanatory.(REMINDER.NEXTREMINDDATENAME)Returnsthetime(inGDATEformat)atwhichthenextremindingfromthenamedreminderwilloccur;NILifNAMEisn'taREMINDERS.(REMINDER.NEXTREMINDDATENAMEDate/Time.string)Setsthetimeatwhichthereminderisnexttobeexecuted.(REMINDER.EXPIRATIONDATENAME)Returnsthetime(inGDATEformat)atwhichthereminderwillbeautomaticallydeleted.(REMINDER.EXPIRATIONDATENAMEDate/Time.string)Setstheexpirationtime.(INSPECTREMINDERNAME)InInterlisp-D,thiswillcallINSPECTonthedefinitionofthenamedreminder;inothersystems,itmerelycallsSHOWDEF.FunctioninInterlisp-Donly:(UNTILKEYDOWNPFNINTERVAL.SECSDURATION.SECSsubCycleDuration.secssubCycleFN)ForaperiodofuptoDURATION.SECSseconds,thefunctionFNwillbe"run"(i.e.,appliedtonoarguments)everyINTERVAL.SECSseconds;bothofthesetimedurationsmaybefloatp's,andhencespecifyfractionalpartsofasecond.Theprocessisstoppedwheneverthereisanychangeinthestateofthekeyboard;exceptthatCTRL,LOCK,LSHIFT,RSHIFT,andLEFTandRIGHT(towofthethreemousebuttons)don'tcount.ThefunctionFN,ofcourse,maysave"state"inordertododifferentthingscyclicallyonthevarious"runnings".Butacommonstructureistohaveamajorcycleandaminorcycleforwhichsomeactivityistobeperformed.Thetwooptionalarguments,subCycleDuration.secsandsubCycleFN,allowforthissecondfunctiontobe"run"attheendofthesubCycledurationî êïc8î êïb6qî Áî ˜î oîFîîôîËî¢îþî1î¶ î%Êî+« î6–î9î@ªîC/îGhïb6î êï`Þî Áî ˜î oîFîîôîËî¢îÕîî;î"nî$óî)ýî+«î/Þî4èî8D îC/îDãï`Þî êï_†î Áî ˜î oîFîîôîËî¢ î¶î;î Àî&¡î)&î/Þî4î7mî; î>%îA�îE´îH9îH?ï_†î êï^.î Áî ˜î oîFîîôîËî¢ î�îéî!—î(Oî-Yî/Þî2cî9òîBXîH?ï^.î êï\Öî Áî ˜î oîFîîôîËî¢îyîPî'îþîƒîdîéî$óî)&î,‚î4î6–î9î; î>üîF‘ï\Öî êï[~î Áî ˜î oîFîîôîËî¢î¬îƒî î#Eî%Êî.0î2cî4î8Dî=NîA�îE´îEºï[~î êïZ&î Áî ˜î oîFîîôîËî¢îƒîî Àî%Êî)&î.0 î7mî:Éî?ÓîDîEºïZ&î êïXÎî Áî ˜î oîFîîôîËî¢î1îî¶î"nî'xî)&î/Þî8Dî:Éî?ÓîBXîGhïXÎî êïWvî Áî ˜î oîFîîôîËî¢îþîïWvî êïVî Áî ˜î oîFîîôîËî¢îyîPî'îþî�îéî#Eî&¡î/î/Þî2cî8DîGbîH9îH?ïVî êïTÆî Áî ˜î oîFîîôîËî¢îþî"nî$óî*Ôî.0î0µî4èî8Dî>%î@ªîDÝîIçîIíïTÆî êïSnî Áî ˜î oîFîîôîËî¢î'îƒî�îî"n î+«î0µî4î7mî=Nî?ÓîDîIîIïSnî êïRî Áî ˜î oîFîîôîËî¢îZî; î'xî)&î0µî1Œî4èîF‹îF‘ïRî êïP¾î Áî ˜î oîFîîôîËî¢îƒî¶î#Eî&¡î5¿îüîA�îDÝîDãïNî êïL¶î Áî ˜î oîFîîôîËî¢îî;î Àî%Êî)&î+«î2cî5¿î:É îDîDÝîDãïL¶î êïK^î Áî ˜î oîFîîôîËî¢ îßîî"nî)&î,‚î4î4èî7mî; î>üîC/îF‹îF‘ïK^î êïJî Áî ˜î oîFîîôîËî¢îƒîéî"nî*Ôî/Þî2cî8Dî; îC/îGbîGhïJî êïH®î Áî ˜î oîFîîôîËî¢î¬î$î*Ôî3:î6–î; î>%îA�îGbîGhïH®î êïGVî Áî ˜î oîFîîôîËî¢î1î4èî9òîüîC/îC/ïD¦î êïCNîPîVïCNî êïAöî Áî ˜î oîFîîôîËî¢î1îd î&¡î.0î2cî6–î; î?Ó îH?ïAöî êï@žî ðï@žî êï?Fî Áî ˜î oîFîîôîËî¢îyîPî'îþî¶îî#Eî(Oî-Yî1Œî4èî7mî>üîBXîE´îEºï?Fî êï=îî Áî ˜î oîFîîôîËî¢î²ï=îî êï<–î ðï<–î êï;>î ðï;>î êï9æî Áî ˜î oîFî Àî Æï9æî êï8Žî Áî ˜î oîFîîôîËî¢îyîPî'îþîƒ î Àî/ ï8Žî êï76î ðï76î êï5Þî Áî ˜î oîFî#Eî'~ï5Þî êï4†î Áî ˜î oîFîîôîËî¢îyîPî'îþî¶îî#Eî&¡î+«î2cî4èî9òî=NîA�îIçîIíï4†î êï3.î Áî ˜î oîFîîôîËî¢îÕî1î;î%Êî)ýî/Þî3:î5¿î9òî>üî@ª îIï3.î êï1Öî Áî ˜î oîFî#Eî'xî5Åï1Öî êï0~î Áî ˜î oîFîîôîËî¢îyîPî'îþî1î�î Àî#Eî(Oî+«î3:î5¿î9òîüîF‘ï0~î êï/&î ðï/&î êï-Îî Áî ˜î oîFî#Eî'~ï-Îî êï,vî Áî ˜î oîFîîôîËî¢îyîPî'îþî¶îî#Eî&¡î+«î2cî4èî9òî=NîDÝîIîIï,vî êï+î Áî ˜î oîFîîôîËî¢î' îéî&§ï+î êï)Æî Áî ˜î oîFî#Eî'xî5Åï)Æî êï(nî Áî ˜î oîFîîôîËî¢îyîPî'îþî1î� î%Êî*ï(nî êï'î ðï'î êï%¾î Áî ˜î oîFî�î Æï%¾î êï$fî Áî ˜î oîFîîôîËî¢îyîPî'îþîƒ î"nî&¡î*Ôî/î5¿î8Dî;  îDÝîGbîGhï$fî êï#î Áî ˜î oîFîîôîËî¢îþîî"nî$óî)ýî1Œî4î9òî>üîEºï#î êï!¶î ðï!¶î êï ^î ðï ^î êïî ðïî êï®î Áî ˜î oîFîîôîËî¢îyîPî'îþîÕî¬îƒîZî1îî!—î$ î.0î2iï®î êïVî ðïVî êïþî Áî ˜î oîF îßîd î)& î4èî4îïþî êï¦î Áî ˜î oîFîîôîËî¢îyîPî'îþîÕî¬îƒîZî1îîßî¶î�îdî;îîéî Àî!—î"nî#Eî$î$óî%Êî&¡î'xî(Oî)&î;  îDãï¦î êïNî Áî ˜î oîFîîôîËî¢îyîPî'îþîZîîéî"nî$óî'x î3:î:Éî>%îE´îH9îH?ïNî êïöî Áî ˜î oîFîîôîËî¢îÕîZîdî#Eî)ýî,‚î/ î8Dî=N îIîIïöî êïžî Áî ˜î oîFîîôîËî¢î1îdîéî$óî)&î1Œî4èî7mî?ÓîC/îH9îH?ïžî êïFî Áî ˜î oîFîîôîËî¢îZ î!—î&¡î)&î*Ôî1Œî2cî5¿îüîE´îEºïFî êïîî Áî ˜î oîFîîôîËî¢î1î;î Àî$î)ýî,‚î/Þî4èî7mî:ÉîC/îIîIïîî êï–î Áî ˜î oîFîîôîËî¢îÕîßîéî&¡î-Yî0µî4èî8Dî=NîA�îDîGbîGhï–î êï>î Áî ˜î oîFîîôîËî¢î¬î¶î#Eî(Oî-_ï>î êïæî Áî ˜î oîFîîôîËî¢îyîPî'îþîZîéî#Eî%Êî,‚î/Þî4î:Éî=NîBXîDÝîGbîGhïæî êï Žî Áî ˜î oîFîîôîËî¢îîé î)&î+«î/î5¿ î?Óî@ªîDîE´îEºï Žî êï 6î Áî ˜î oîFîîôîËî¢îƒîéî"nî$óî)&î*Ôî/Þî4èî8Dî9òî>üîDîGbîGhï 6î êï Þî Áî ˜î oîFîîôîËî¢î¬îßî"nî$óî'xî)ý î3:î4î7mî:ÉîBXîB^ï Þî êï †î Áî ˜î oîFîîôîËî¢ îßî-Yî0µ î:Éî?ÓîC/îGbîGhï †î êï.î Áî ˜î oîFîîôîËî¢îƒîî!—î$î)&î+«î/î2cî4èî8Dî?ÓîGbîGhï. 9 êq?€[ÇPtime.Forexample,INTERVAL.SECSmaybe0.5inordertocausea"winking"ofamessageinthePROMPTWINDOWeverysecondorso,andsubCycleDuration.secsmaybe10.0inordertocausea"flashing"ofthewholescreenevery10secondsorso.Inthiscase,themajorcycleisthe"fastratewinking"everysecond,whereastheminorcycleisthe"slowrateflashing"every10secs.î êïc8î êïb6qî Áî ˜î oîFîîôîËî¢î¬îƒî‰ïb6î êï`Þî Áî ˜î oîFîîôîËî¢îyîPî'îþîZîé î+«î/î1Œî4èî7mîüîDîE´îEºï`Þî êï_†î Áî ˜î oîFîîôîËî¢îî�î;î$óî'xî*Ô î5¿î:Éî@ªîC/îF‹îIçîIíï_†î êï^.î Áî ˜î oîFîîôîËî¢î$î'xî)ýî.0î0µî5¿î8Dî=Nî>ü îH9îH?ï^.î êï\Öî Áî ˜î oîFîîôîËî¢î'îƒî�î"nî'xî)ýî0µî3:î6–î7mî9òî>%îC/îF‹îF‘ï\Öî êï[~î Áî ˜î oîFîîôîËî¢î¬î¶î;î!—î&¡î*Ôî2cî7mî>%îDÝîH9îH?ï[~î êïZ&î Áî ˜î oîFîîôîËî¢î¬î¶î;î!—î&¡î*Ôî3:î8Dî:Éî?ïZ&6 êq?€[Ç~GACHA ~GACHA Y ’Gßj/ÿÿœ©Àxÿÿÿÿÿÿ){PHYLUM}PROMPTREMINDERS.TTY;12JONL.PA15-Apr-84 14:55:14