H[0 +8+fq(+4)[1 0fo10f"g+q1' +fq()+4u1 fq1"l 0' ,q1:m(q1+4(]1]0))b a?%bbCb)bab8badFbbUbbdbbsbbbbb1ax`gSXc5bNYqYZ9cm`{Xb s b=%bOm?o&pYqM3vs|@~M94Zgyt 3q)EUC(]5wVWVbVXcXYqZ1Z9Z[ [n\p']5`SC`{S`waVWo`g`w`{UQ Y6 {) &[A SvkoEGhO-U dm!?YES9gHcAdNs~}9Re)kkcEUKkMJ/.~]ADysIDp/h5_LMV79N%~a+=y=Qw444Z}}SS\h.?~Q6דN>>Xg? H"U]ynSӯL a>jS&o.QE9R(RkH C^CUO]ӁS=SS R9 q]Lo=v5[vxrMH!d5eKE-+os)C+o+oX+o+om+o+o++o+oA+o++ok+o@+o+oU+o+oj+o+o+?(.!I+o"#R(u!s+\ Q ',-9Mw0/\s0C1_8BV;=!i?@@=|@ yG A_ 1B "D9 WDc 5F }E~ HMF Mq [N N nO Os!O!O! V! !( !2!!=!s!H"!S# !]#!h#1!r$!|$!"$Q"$"'5"$("/'4"9 V"C(."N'4"X("cQ"e"zk%#  \#7i3#[UL#u#J t#V#gT#S^$\$U#$GCy$2W$EA$T.T$gSR$w[% .3%1-%-ZF%u%T%%TI%mS%f&U&wk&aZ"&R&W&jWs&\'Za'/&'%[u'evu'Fe+'c'dx'pi[(d('U{(?o(1T(=(Jj(X(fj(tUg)f)f)7[Q)+S)u )Lg)uE)ku))* i*3e*"e*SXa*wk*I_*I*kn*]z+ A*+o+&z+4h+CaS+e+gy+q~G+i,c,Sg,:\\,q,Uw,s),ugm--m-E-eQ-`-Q-U-tN. .u.SU.5b.Ht.Uw5.cA.m.z.tw# Argument Part# Babyl '# Babyl ( ~# Babyl ) ~# Babyl * ~# Babyl + ~# Babyl , ~# Babyl - ~# Babyl .# Babyl / ~# Babyl 0 ~# Babyl 1 ~# Babyl 2 ~# Babyl 3 ~# Babyl 4 ~# Babyl 5 ~# Babyl 6 ~# Babyl 7 ~# Babyl 8 ~# Babyl 9 ~# Babyl ;# Babyl # Babyl # Babyl , , +, -, *, /, (, and )# Babyl # Babyl # Babyl # Babyl # Babyl # Babyl =# Babyl ?# Babyl A# Babyl B# Babyl C# Babyl D# Babyl E# Babyl F# Babyl G# Babyl H# Babyl I# Babyl J# Babyl K# Babyl L# Babyl M# Babyl N# Babyl O# Babyl P# Babyl Q# Babyl R# Babyl S# Babyl T# Babyl U# Babyl V# Babyl W# Babyl X# Babyl Y# Babyl Z# Babyl \# Babyl ^C# Babyl ^D# Babyl ^F# Babyl ^H ~# Babyl ^I ~# Babyl ^J ~# Babyl ^L# Babyl ^M ~# Babyl ^N# Babyl ^O# Babyl ^P# Babyl ^R# Babyl ^S# Babyl ^T# Babyl ^V ~# Babyl ^X# Babyl ^Z# Babyl ^[ ~# Babyl ^]# Babyl ^` ~# Babyl |& Add Basic Label& Add to Labels Option& Append to TNX Mail File& AutoLabel Subject Labels& Babyl --MORE--& Babyl Add Recipient& Babyl Append& Babyl Delete Recipient& Babyl Execute Options& Babyl Expunge& Babyl Get Message Labels& Babyl Macro Get& Babyl O Done Hook& Babyl Process Sender Fields& Babyl R Done Hook& Babyl Resurvey One Message& Babyl Select Message& Babyl Set Mode Line& Babyl Survey One Message& Babyl Survey Several Messages& Babylize Buffer& Babylize Digest Contents& Bounds Of Header& Bounds Of Original Header& Calculate Message Number& Check Message Label& Complete TNX Header& Compressed BABYLM Library& Convert Babyl File Version& Estimate Mail-Line Category& Find Digest Dash Separator& Form Header& Get Labels for Survey& Initialize Babyl Buffer& ITS Mail Buffer& ITSify TNX Mail& Jump To Current Survey Line& Label Babyl Message& Label Map Command& Mail Message& Make Babyl Label Table& Map Over Labeled Messages& Parse Header& Process Recipient Field& Push Message& Push To Buffer& Push To Edit Mail& Read Babyl File& Read Babyl Label& Reform Header& Reformed Bit& Remove Basic Label& Reset Babyl Options& SetUp BABYL Library& Setup BABYLM Library& Setup Reply Template& Survey-Select Message& SvMenu ^RNormal Macro& TNX Mail Buffer& Use Babyl Label TableBabylConvert Babyl File VersionCreate Babyl FileDelete Labeled MessagesEdit and Mail BufferEdit Labels ListLabel Labeled MessagesLabel MessageLabel Messages Containing StringMail With TemplateNext Labeled MessageOutput Labeled MessagesRe-Enter BabylRemind Me Of This MessageSet Mail TemplateShorten From Field For Stupid Local Mail ReaderSurvey All MessagesSurvey Deleted MessagesSurvey Labeled MessagesSurvey MenuSurvey Messages Containing StringSurvey ModeSurvey RemindersSurvey Seen MessagesSurvey Unlabeled MessagesSurvey Unseen Messagesthe Babyl HelperUnDelete Labeled MessagesUndigestify Babyl Message^R Babyl Add Cc-Recipient^R Babyl Add Subject: Field^R Babyl Add To-Recipient^R Babyl Delete Recipient^R Babyl Yank^R Fill Indented Mail Region^R Survey Menu T^R SvMenu Argument~DIRECTORY~~DOC~ # Argument Part~DOC~ # Babyl '~DOC~ # Babyl ( ~~DOC~ # Babyl ) ~~DOC~ # Babyl * ~~DOC~ # Babyl + ~~DOC~ # Babyl , ~~DOC~ # Babyl - ~~DOC~ # Babyl .~DOC~ # Babyl / ~~DOC~ # Babyl 0 ~~DOC~ # Babyl 1 ~~DOC~ # Babyl 2 ~~DOC~ # Babyl 3 ~~DOC~ # Babyl 4 ~~DOC~ # Babyl 5 ~~DOC~ # Babyl 6 ~~DOC~ # Babyl 7 ~~DOC~ # Babyl 8 ~~DOC~ # Babyl 9 ~~DOC~ # Babyl ;~DOC~ # Babyl ~DOC~ # Babyl ~DOC~ # Babyl , , +, -, *, /, (, and )~DOC~ # Babyl ~DOC~ # Babyl ~DOC~ # Babyl ~DOC~ # Babyl ~DOC~ # Babyl ~DOC~ # Babyl =~DOC~ # Babyl ?~DOC~ # Babyl A~DOC~ # Babyl B~DOC~ # Babyl C~DOC~ # Babyl D~DOC~ # Babyl E~DOC~ # Babyl F~DOC~ # Babyl G~DOC~ # Babyl H~DOC~ # Babyl I~DOC~ # Babyl J~DOC~ # Babyl K~DOC~ # Babyl L~DOC~ # Babyl M~DOC~ # Babyl N~DOC~ # Babyl O~DOC~ # Babyl P~DOC~ # Babyl Q~DOC~ # Babyl R~DOC~ # Babyl S~DOC~ # Babyl T~DOC~ # Babyl U~DOC~ # Babyl V~DOC~ # Babyl W~DOC~ # Babyl X~DOC~ # Babyl Y~DOC~ # Babyl Z~DOC~ # Babyl \~DOC~ # Babyl ^C~DOC~ # Babyl ^D~DOC~ # Babyl ^F~DOC~ # Babyl ^H ~~DOC~ # Babyl ^I ~~DOC~ # Babyl ^J ~~DOC~ # Babyl ^L~DOC~ # Babyl ^M ~~DOC~ # Babyl ^N~DOC~ # Babyl ^O~DOC~ # Babyl ^P~DOC~ # Babyl ^R~DOC~ # Babyl ^S~DOC~ # Babyl ^T~DOC~ # Babyl ^V ~~DOC~ # Babyl ^X~DOC~ # Babyl ^Z~DOC~ # Babyl ^[ ~~DOC~ # Babyl ^]~DOC~ # Babyl ^` ~~DOC~ # Babyl |~DOC~ & Add Basic Label~DOC~ & Add to Labels Option~DOC~ & Append to TNX Mail File~DOC~ & AutoLabel Subject Labels~DOC~ & Babyl --MORE--~DOC~ & Babyl Add Recipient~DOC~ & Babyl Append~DOC~ & Babyl Delete Recipient~DOC~ & Babyl Execute Options~DOC~ & Babyl Expunge~DOC~ & Babyl Get Message Labels~DOC~ & Babyl Macro Get~DOC~ & Babyl O Done Hook~DOC~ & Babyl Process Sender Fields~DOC~ & Babyl R Done Hook~DOC~ & Babyl Resurvey One Message~DOC~ & Babyl Select Message~DOC~ & Babyl Set Mode Line~DOC~ & Babyl Survey One Message~DOC~ & Babyl Survey Several Messages~DOC~ & Babylize Buffer~DOC~ & Babylize Digest Contents~DOC~ & Bounds Of Header~DOC~ & Bounds Of Original Header~DOC~ & Calculate Message Number~DOC~ & Check Message Label~DOC~ & Complete TNX Header~DOC~ & Compressed BABYLM Library~DOC~ & Convert Babyl File Version~DOC~ & Estimate Mail-Line Category~DOC~ & Find Digest Dash Separator~DOC~ & Form Header~DOC~ & Get Labels for Survey~DOC~ & Initialize Babyl Buffer~DOC~ & ITS Mail Buffer~DOC~ & ITSify TNX Mail~DOC~ & Jump To Current Survey Line~DOC~ & Label Babyl Message~DOC~ & Label Map Command~DOC~ & Mail Message~DOC~ & Make Babyl Label Table~DOC~ & Map Over Labeled Messages~DOC~ & Parse Header~DOC~ & Process Recipient Field~DOC~ & Push Message~DOC~ & Push To Buffer~DOC~ & Push To Edit Mail~DOC~ & Read Babyl File~DOC~ & Read Babyl Label~DOC~ & Reform Header~DOC~ & Reformed Bit~DOC~ & Remove Basic Label~DOC~ & Reset Babyl Options~DOC~ & SetUp BABYL Library~DOC~ & Setup BABYLM Library~DOC~ & Setup Reply Template~DOC~ & Survey-Select Message~DOC~ & SvMenu ^RNormal Macro~DOC~ & TNX Mail Buffer~DOC~ & Use Babyl Label Table~DOC~ ~DOC~ Babyl~DOC~ Convert Babyl File Version~DOC~ Create Babyl File~DOC~ Delete Labeled Messages~DOC~ Edit and Mail Buffer~DOC~ Edit Labels List~DOC~ Label Labeled Messages~DOC~ Label Message~DOC~ Label Messages Containing String~DOC~ Mail With Template~DOC~ Next Labeled Message~DOC~ Output Labeled Messages~DOC~ Re-Enter Babyl~DOC~ Remind Me Of This Message~DOC~ Set Mail Template~DOC~ Shorten From Field For Stupid Local Mail Reader~DOC~ Survey All Messages~DOC~ Survey Deleted Messages~DOC~ Survey Labeled Messages~DOC~ Survey Menu~DOC~ Survey Messages Containing String~DOC~ Survey Mode~DOC~ Survey Reminders~DOC~ Survey Seen Messages~DOC~ Survey Unlabeled Messages~DOC~ Survey Unseen Messages~DOC~ the Babyl Helper~DOC~ UnDelete Labeled Messages~DOC~ Undigestify Babyl Message~DOC~ ^R Babyl Add Cc-Recipient~DOC~ ^R Babyl Add Subject: Field~DOC~ ^R Babyl Add To-Recipient~DOC~ ^R Babyl Delete Recipient~DOC~ ^R Babyl Yank~DOC~ ^R Fill Indented Mail Region~DOC~ ^R Survey Menu T~DOC~ ^R SvMenu Argument~DOC~ ~FILENAME~~FILENAME~~INVERT~BABYL0fo..qBABYL Loaded-11042645917"n 0m.CSubDocIf non0, command documentation mentions subroutine use 0m.CBabyl Setup HookIf non0, is run immediately after loading Babyl library 0m.CBabyl Standalone JobNon0 means will exit to DDT/EXEC 0m.CUndigestify Keep Digest* Describe M-x Undigestify Babyl Message for details on values @:i*||m.CBabyl F Default @:i*|FOO TXT|m.CBabyl ^O Filename 0m.CSurvey Quietly 1m.CBabyl A Mode Display* Non-0 lets A update mode line 0m.C*Survey* Buffer 3m.CBabyl Survey FROM/TO Control* Bits, 1 = enable prettification, 2 = shorten hosts, 4 = no hosts 1m.CBabyl N After D* Non-0 tells D to do automatic N 0m.CFrom: 0m.CSubject: 0m.CBabyl CC To* Automatic CC field in mail if non-0 0m.CBabyl F Done Hook0 or a Teco program to run after F successfully exits 0m.CBabyl F Hook0 or a Teco program to run after F sets up its template 0m.CBabyl F Control* 0 (general edit), 1 (read To/Re then edit), 2 (read To/Re and send) 0m.CBabyl Fcc To* Automatic Fcc field in Tenex or Tops-20 mail if non-0 @:i*|--Text follows this line--|m.CBabyl Header/Text Separator* 1 line that separates header and text in recursive mail edit 0m.CBabyl G Done HookUser hook, run (if non0) after new mail is collected; argument is number of new messages 0m.CBabyl Filenames 0m.CBabyl O Filename @:i*||m.CBabyl K Text 0m.CBabyl O Done HookIf non-0, run when O is done 0m.CBabyl R Done Hook0 or a Teco program to run after R successfully exits 0m.CBabyl R Hook0 or a Teco program to run after R sets up its template 0m.CReply-to: 0m.CTo: 0m.CCc: 1m.CBabyl Trim Recipient List* 0 will disable all removal of reply recipients @:i*||m.CBabyl Dont Reply To* 0 or a Teco search string of CCs to remove (null means yourself) @:i*||m.CBabyl Modified Messages @:i*|-2"e m6unseenw'|m.CBabyl Command Hook0 or Teco program to run at times in command execution. Its arg tells situation: In normal Babyl com loop (Q0 has com char, Q5 has arg string): 1 before display, 2 after, 3 before com, 4 after. In survey menu (Q..0 has com char): 5 before com, 6 after. 7 when entering SvM level (so you can bind things). 0m.CParsed Message Number 0m.CDate: 0m.CSender: 0m.CMessage-id: 0m.CKeywords: 0m.CIn-Reply-to: 0m.CRedistributed-To: 0m.CRedistributed-By: 0m.CRedistributed-Date: 0m.CMSG: 0m.CMail-from: 0m.CRcvd-Date: 0m.CUnknown: 0m.CBabyl Punt Missing HostsNon-zero speeds up reformation process 0m.CBefore Babylizing File HookRun after reading but before Babylizing non-Babyl files 0m.CBabyl Autolabel Messages* Non-0 causes autolabeling from subject fields 0m.CMessage Number 0m.CNumber of Babyl Messages @:i*|RemindNow|m.CBabyl Last | Label @:i*||m.CBabyl Labels Option 0m.CCRL List 0m.CCRL Prefix 0m.CWindow 1 Buffer 0m.CWindow 1 Pointer 0m.CWindow 2 Buffer 0m.CWindow 2 Pointer 0m.CBabyl C Hook0 or a Teco program to run after C sets up its template 0m.CCurrent Babyl Template Name0 or name of template in use 0m.CBabyl M Hook0 or a Teco program to run after M sets up its template 0m.CBabyl Edit Mail Hook0 or a Teco program to run before recursive edit on mail to send 0m.CBabyl Require Subjects* If non-0 Babyl will require you to have a subject in outgoing mail 0m.CPre-*Mail* Buffer 0m.CWindow 1 Size 0m.CBabyl Day of Week Flag* If non-0 day of week is added to Date field of outgoing mail 0m.CBabyl Personal Name* A full name to use with user name as in Personal Name  0m.CBabyl User Name* A name to use in From field possibly overriding username 0m.CBabyl ..D 1m.CBabyl Strip Local Host* Non-zero removes local host from reformed header 11042645917m.vBABYL Loaded' m(m.m& SetUp BABYLM Library) qBabyl Setup Hookf"n[1 m1'w m(m.m& Push to Buffer)*Babyl* 1f[^RMore fsZ"e m(m.mText Mode) 1f  > ' "# @ftReentering temporarily exited Babyl...  0fsEchoActivew f*' "'nuBabyl Standalone Job fs^RMode"n :m(m.m& Babyl Execute Options)' @:i*| f]^REnter m(m.m& Babyl Execute Options) fs^RExit | f[^REnter  [U[Y[1[2[3[4[5 f[DFile fsXUName:f6uU 1f[FNamSyntax m.m& Yes or NouY fsHSnamefsDSNamew etU BABYL f"ew 1m(m.m& Read Filename)Babyl filenamef"ew''u3 et3 fsDFileu3 ftCreating Babyl file 3. Typical (and safe) answers to questions will be shown inside brackets, as in: [Y].  e?"e ftClobber existing 3 [N]?  mY"e ftAborted. 0'' fsOSTecof"ew etDSK:U MAIL' "#-1"e etDSK:MAIL.TXT.1' "# etDSK:MESSAGE.TXT;1'' 0u2 ftIs there an incoming-mail file [Y]?  mY"n 1m(m.m& Read Filename)Mail filenameu2' fsUWrite"n e\ fne^' f[BBind iBABYL OPTIONS: Version:5  q2"n et2 iMail:  g(fsDFile) i ' 0u4 ftDo you want new mail to be appended to the end (rather than inserted at the beginning) of the Babyl file [Y]?  mY"n 1u4 ' 1u5 q2"n fsOSTeco"e ftDo you tell Comsat (R-OPTION APPEND) [N]?  mY"e 0u5'' q4-q5"e ftDo you want the incoming new mail reversed (this will make it inconsistent with the BABYL file though) [N]? ' "# ftDo you want the incoming new mail reversed (to be consistent with the BABYL file) [Y]? ' mY"n q4+2u4'' iAppend: q4\ i  fsOSTeco"n ftDo you want an XMail file, which gets copies of all incoming mail as it is added to the Babyl file [N]?  mY"n etXMAIL.TXT m(m.m& Read Filename)XMail filenamef"nu2 iXMail: et2 g(fsDFile) i  ftDo you want mail appended to the XMail file [Y]?  mY"n iXMail Append  '''' ftIs there an owner for this Babyl file [Y]?  mY"n 1,m(m.m& Read Line)Owner user name (u): f"nu2 fq2"e quu2' iOwner:2 '' ftHeader can be reformatted to look better and not show redundant or useless fields, and missing host names will be added so other commands will work better, e.g. the reply and forward commands. Do you want headers to be reformed [Y]?  mY"e iNo Reformation '"# ftIn general the old headers are saved, so the 1H command can show them. Should original headers be discarded [N]?  mY"N iNo Original '' i 0, recent, unseen,, *** EOOH *** Date:  fsDATEfsFDConvertw i From: BABYL at  1:"n iHere' i To: U Re: New Babyl file This is a sample message in the new Babyl file. Feel free to delete it.  et3 eihpef fsOFileu1 @ft Written: 1  0fsEchoActivew [0[1[2[3[4[5[6[7[8[9 [Fill Column qFill Columnu6 f[VB f[VZ m.m^R Back to Indentationu3 m.m^R Delete Horizontal Spaceu4 m.m& Estimate Mail-Line Categoryu5 m.m^R Fill Regionu8 m.m^R Indent Rigidlyu9 .,(:)ffsBoundw hm(m.m& Save for Undo)fill 5*5fsQVector[..u @fn|q..ufsBKillw| j 0l .u0 q0f(:\u0 fn0jw )u0 .( zj 0f"n i ' )j < .-z; 0l m5"n l !' :f"e l !' @m3 fsSHPosu1 @m4w < l m5:@; @m3 :f@; fsSHPos-q1"e 0:k @m4w i  !' 0; > 0l .: -l q6-q1uFill Column @m8w .-z( q1m9w )+zj > q0j < :s:: Re: ; .u7 :l fsSHPos-q6"g q7j -4d i Subject:  -l m3 fsSHPos(l), i' > z: q0,z s[0 0f[vbw f[vzw 0l 0,1a-"e 2' -4f= "e 2' 1:fsBoundw qBabyl ..D[..d :g..du..d :*5:f..d  1:"n j oLast' (-1,1a-:)*(-1,1a-@)"e j 1' 0l @f l 12f=MESSAGE FROM"e j -1' 13f=[MESSAGE FROM"e j -1' :ff~*** EOOH ***"e j 2' qBabyl Header/Text Separatoru0 :ff~0"e j 2' !Last! @f l :f"n @f-_l :f"e j 2'' j 0[l[d m(m.m& Bounds of Header)w @f l .,(fb   r).xl m.m& Find Digest Dash SeparatoruD 65,75mD"e :i*Bad Digest formatFSErr' f:m(m.m& Babylize Digest Contents)rf[SString [1 ,-:i1 0s 1 fu1 < :s"e 0' q1,z-.f:u1w q1@f-l @f l .-(:l .)@; > 1l -1[0[1 [b[t .-b[p qNumber of Babyl Messages :itTo: l at MIT-MC  b,zm(m.m& Save for Undo)undigestify ff&2"e qUndigestify Keep Digest' "# 'u1 q1"n hx0 bj g0 i  %nw q1-1"e .(q1"l z' "# b'j m(m.m& Add Basic Label)deletedw )j' q1"l 4r fsZ-.fsVZw' "# .fsVBw %Message Numberw'' b+qpj f[vb fsbconsub f"n j 2lit ' "# qb[..o gTo: gCc: j :sl ( hk ]..o )"e j 3l gt'' < 27,33md"e f;Msgs' -:l.,(0l).@f  (2l)@; > > qbfsbkill qnuNumber of Babyl Messages 0uParsed Message Number :iBabyl Modified Messages fq*Survey* Buffer"g q*Survey* Buffer[..o hk 0fsModifiedw 0fsXModifiedw ]..o ' f]vb j :m(m.m& Babyl Select Message)fsOSTeco"e :i*Only intended for TNX fsErr' z-.[1 bj :s From:"l 0lk' .,(iFrom:  g(fsHSName:f6) i  ).f z-q1j 1m(m.m& Push Message) ff"n 1m(m.m# Babyl J)w' 9999 m(m.m& Babyl Survey Several Messages) m(m.m& Push Message) ff"n 1m(m.m# Babyl J)w' 9999m(m.mSurvey Labeled Messages)unseen m(m.m& Push Message) ff"n 1m(m.m# Babyl J)w' 9999m(m.mSurvey Labeled Messages)deleted m(m.m& Push Message) ff"n 1m(m.m# Babyl J)w' 9999m(m.mSurvey Unlabeled Messages)unseen x[1[2[3 m(m.m& Use Babyl Label Table) 8+2,f Survey unlabeled with: u2 m(m.m& Push Message) m.m& Babyl Survey Several Messages m.m& Babyl Select Message m.m& Maybe Flush Output fq2"e @:i2| fb 1a-13 | @:i3| 0s,, |' "# @:i3| 0s, 2, | @:i2| :fb |' 0,0mBw 0,(fsZ)fsBoundariesw ff&1"e j 0u1' "# qMessage Numberu1' ff&1"n '< mf1; 0fsVZw m3 < @:fl c .-z; 1a- "n !' %1w l m2@; > .-z; q1uMessage Number mS 1,mBw zj > fsListen"e ftDone. ' [0 1,f Survey messages containing string: f"e'u0 m(m.m& Push Message) m.m& Babyl Survey Several Messages m.m# Babyl ^F m.m& Maybe Flush Output 0mB ff"n 1m(m.m# Babyl J)w' 0fsVBw -:sw < mA1; q0,1mF; 1,mBw zj >w fsListen"e ftDone. ' 100000.fsExit -1,(f) :m(m.m# Babyl D)[0[1[2 ff&2"n u0' "# qBabyl F Defaultu1 ff"n :\u2 :i22 '"# :i2' 1,m(m.m& Read Line)2Find (Default "1"): u0 !''! fq0"l ' fq0"n q0uBabyl F Default'"# q1u0' ' 0f[vb 0f[vz .u1 @fn| q1j | "l -':s :s0"E ff&2"N 0' :i*Not foundf;Babyl-Command-Abort' ]..N ]*w ]*w m(m.m& Babyl Select Message) m(m.m& Calculate Message Number) ff&2"N -1'f @m(m.m^R Previous Screen)w [0[1 m(m.m& Bounds Of Header):jw .u1 fnq1j .f[VB :s"l r'"# zj' fsZ-.f[VZ hm(m.m& Save for Undo)character fix j <:s  ; rd fsHPosu0 i  q0, i r > j <:s; 0f-1"g -2d'> j < :s ; -d i  > .[0[1 m.m# Babyl ^N m.m& Check Message Label qMessage Numberu1 f"E ' q1m(m.m# Babyl J) :i*No more unseen f;Babyl-Command-Abort f+ -[1 < 0fsVZw :s ; m(m.m& Babyl Select Message) %Message Numberw %1; > q1"n m(m.m& Babyl Select Message) -1"n :i*Now at end, no next message '( ) f;Babyl-Command-Abort ' [1 qBabyl ^O Filenamef"ew'f[DFile 5,f Add message tou1 et1 fsDFileuBabyl ^O Filename' e[ e\ fn e^ e] q..ou1 f[BBind g1 :s Re: +1"e @f l 0k iSubject: ' :m(m.m& Append to TNX Mail File)-[1 qMessage Number-1< 0fsVBw -:s; 1:@:; qMessage Number-1uMessage Number %1; > q1"n 1:< m(m.m& Babyl Select Message) >"n 1m(m.m# Babyl J)' :i*Now at top, no previous message f;Babyl-Command-Abort' [0[1[2 [3[4 fsVB[3 fsVZ[4 1fsModeChangew 0f[^RMore  qMessage Number:\u0 :fo..qBabyl Modified Messagesu2 q:..q(%2)u1 :i:..q(q2)10M0  fsVB-q3"E fsVZ-q4"E q3+q4"N  ''' m(m.m& Initialize Babyl Buffer) [1 20:"e :i*CfsEchoDisplay @ftKind of survey (A,D,L,M,R,S,U, or ?): ' < 2,m.i fi:fcu1 q1-:@; > fsRGETTY"e ft ' (q1-"'e)(q1-A"'e)"n f:m(m.mSurvey All Messages)' (q1-"'e)(q1-D"'e)"n f:m(m.mSurvey Deleted Messages)' (q1- "'e)(q1-L"'e)"n fm(m.mSurvey Labeled Messages) ' (q1-"'e)(q1-M"'e)(q1-"'e)(q1-F"'e)"n f@:m(m.mSurvey Messages Containing String)' (q1-"'e)(q1-R"'e)"n fm(m.mSurvey Reminders) ' q1-S"e f:m(m.mSurvey Seen Messages)' (q1-"'e)(q1-U"'e)"n f:m(m.mSurvey Unseen Messages)' q1-?"e m(m.mDescribe)# Babyl ^S f:m(m.m# Babyl ^S)' (q1-177."'e)(q1-"'e)"e fg' :@m(m.m^R Display Load Average):i*CfsEchoDisplayw qBabyl Standalone Job"e f;Babyl-Catch' 100000.fsExitw f@m(m.m^R Execute Minibuffer)w fsRGETTY"n 1:w ' ft  ff"n .,(l).t m(m.m& Babyl --MORE--)' "# .,zt zj -2f= "n ft '' "l 2[Survey Quietly @m(m.m# Babyl ^S)' "# f':m(m.mSurvey Menu)qMessage Number:\[1 :i551 0[..J :I..JBabyl-Shhh m(m.m& Read Line);u3 = :i550 0<1m(m.m# Babyl N) qBabyl A Mode Display"n 1fsModeChw fr' @m(m.m# Babyl B) > ff-2"l fm(m.m& Babyl Survey Several Messages)' "# ff-3"e m(m.m& Push Message) m(m.m# Babyl J) (-+1)m(m.m& Babyl Survey Several Messages) '' [1[7[8[9 qSurvey Quietly[2 qBabyl ..D[..d .u7 @fn|0,fsZfsBoundw q7:j"e zj' m(m.m& Babyl Select Message)| [7[..o 0fsVBw -s  l .fsVBw -1f[Truncate q..ou9 q*Survey* Bufferu8 q8fp"n [Previous Buffer m(m.mSelect Buffer)*Survey* q..ou*Survey* Buffer q..ou8 m(m.mSelect Buffer)' q8u..o q2&1"e hk :iBabyl Modified Messages' q9u..o fsZ-z"e :i*C fsEchoDisplayw @ftNo Messages  0fsEchoActivew q8u..o 0fsXModifiedw 0fsModifiedw ' qMessage Numberu7 m.m& Get Labels for Survey m.m& Babyl Survey One Message ff&1"e 1'"# q8u..o i No. Lines From->To Subject or Text  q2&2"e -t' '< q2&2"e fsListen"n :fi-32"n 1;''' q9u..o j s *** EOOH ***  2r .fsVBw q8u..o 3,q7\ q9,q8mX q2&2"e -t' !DEL! q9u..o zj 0,(fsZ)fsBoundw 4f= :@; %7w l .,(sr). fsBoundw > q2&2"e fsListen"n :fi-32"n ftFlushed.  1fsFlushedw'' "# -1"g ftDone.  ''' q8u..o 0fsXModifiedw 0fsModifiedw  [0[1[2[3[4[5 [7 u..o mku7u0 -u1 <.-z;%1wl> u..o q0i 5,q1\ 0u0 0u3 0u4 0u5 u..o jl 4f=MSG:"e l < 8f~DISTRIB:@:; 8c @f l 1:x4 l > < 8f~EXPIRES:@:; l > ' 1:fb@:f"ew u..o i ??? oCGM' +1"e :s "e u..o i ??? oCGM' r 0x3 :fb Re: "l 1:x5' l 4f~TO: "e 4c 1:x4 l' < 4f~TO: @:; l> < 4f~CC: @:; l> 0l .u0 ' "# :s "l 2r .u0 '"# zj' fsz-.f[vz j < :s From; @f l 1a-:"n !' c @f l 1:x3 1; > j < :s To; @f l 1a-:"n !' c @f l 1:x4 1; > j < :s Subject Re; @f l 1a-:"n !' c @f l 1:x5 1; > f]vz ' u..o i  .u1 q3"n g3' ! q4"n g4' qBabyl Survey FROM/TO Control[9 q9&1"n q1j 0s(BUG !)! <:s; BUG- ful -d > q1j < @:f(l!)! .-z; flk -@f k > q1j <[5 >[6 < @f,-6l .u2 @:f,65l .-z; 1a-q5"e q2,.kd @:f6l .-z; d' > q1j 0s,  < :s; -d > q9&4"n q1j 0s at @ <:s; fkc @:f,6f(l0,1a-q6"e-1')k>' "# q9&2"n q1j 0s at  < :s; @ > q1j 0s@MIT-Multics < :s; @MUL > q1j 0s@MIT- <:s; -4d > fsOSTeco"e q1j 0s@AI@MC@ML@DMS@DM <:s; fkd >' "# q1j fsMachine:f6[2 0s@2 <:s; fkd > ]2' q1j 0s@SU-AI <:s; @SAIL > q1j 0s@SU- <:s; -3d> q1j 0s@USC-ISI <:s; -3c-4d > q1j 0s@CMU-10 <:s; -3D > '' fsXUname:f6u2 zj i  q1j < r :s2; r -fq2d 1a-@"E <@:f,- k 1a--@:; q6,2a-q6@; d>'> ]6]5 ' zj -d 33-(fsHPos)f"l d'"# ,32i' i 7 q5"e q0"n u..o 0fsZw q0j < @f l .-z; fw+1af@:-:; :l > .-z"e q0j @f l' :x5 u..o'' q5"n g5' 0fsHPosition-(fsWidth-2)f"g,0d i!'w !CGM! u..o i  .[0[1[2[3[4[5 3,:\u1 j:s 1"e q0j ' qB[..o mJ 0fsVBw -s  l .fsVBw mku2u1 s *** EOOH ***  .(0u3 <.-z;%3wl>)j 4f=MSG:"e l < 8f~DISTRIB:@:; l > < 8f~EXPIRES:@:; l >' 0u4 1:fb@:f"ew  '+1"e :fb Re: "l 1:x4' l < 4f~TO: @:; l> < 4f~CC: @:; l> 0l .u5 ' "# :s "e zj' .u5 < -:s Subject Re; fkc @f l 1a-:"n 0l !' c @f l :x4 1; > ' q4"e q5j < @f l .-z; fw+1af@:-:; :l > .-z"e q5j @f l' :x4' qSu..o 0l 4c 0a-q1"n -d q1i -1f' @f l \-q3"n -5d 5,q3\ -5f' 0,34:fm :fx1 .( g2 g4 0fsHPosition-(fsWidth-2)f"g,0d i!'w )j :ff=1f"nf"l*(-1)'cr :ff'w ff&1"n m(m.m# Babyl J)' m(m.m& Add Basic Label)deleted"n @ft (Already deleted.)  0fsEchoActivew' ff&1"n 1u..h' ff&2"e qBabyl N After D"e ' 1'"# ',1:m(m.m# Babyl N)m(m.m& Babyl Expunge) 1m(m.m& Initialize Babyl Buffer) qNumber of Babyl Messages"e ftBabyl file has no messages left. Want to exit?  m(m.m& Yes or No)"n @:m(m.m# Babyl Q)' ftOK, pick another Babyl file. @:m(m.m# Babyl I) ' :m(m.m& Babyl Select Message)n[0[1[2[3[4[5 ff&1"n 0'"# qBabyl F Control'u2 :i*To continue editing this message use the C command.( )[Abort Resumption Message .(1m(m.m& Parse Header)w)j fsQPPtr( -2"'e,1m(m.m& Push To Edit Mail) hk iTo:  .u3 0fsWindoww q2"g 1,m(m.m& Read Line)To: f"ew 'u1 g1' i  qBabyl CC Tof"nu1 icc: 1  'w fsOSTeco"n qBabyl Fcc Tof"nu1 iFcc: 1  ''w qFrom:u1 fq1"g iRe: 1 fsQPPtr( fsBConsu4 @fn|q4fsBKill| :i*,q4m(m.m& Process Recipient Field)Re q4[..o j @:f@x1 )fsQPUnwindw 0lk i[1: ' "# i[Who?: ' qSubject:u1 fq1"g .(g1)j :l .,zk i]' "# iforwarded]' 0fx1 q2"g 1,m(m.m& Read Line)Re: (1): u4 fq4"n q4u1'' fq1"g iRe: 1  ' gBabyl Header/Text Separator i  q2"g .u3' j 0u1 < .-z; %1w l > .fsWindoww .( 1,4@m(m.m^R Babyl Yank)w )j q2"e q1@:f' x1 q3j qBabyl F Hookf"nu0 fm0'w q2-2"l m(m.mEdit and Mail Buffer)' "# fsOSTeco"e m(m.m& ITS Mail Buffer)' "# m(m.m& TNX Mail Buffer)'' j :s 1"l fkc l .u1 0u0 j fsTopLine+q0fs^RVPosw q1j q2"e 0@:f'' )fsQPUnwindw qBabyl F Done Hookf"nu1 m1'w [1[2[3 f[DFile qBuffer Filenamesu3 qBabyl Mail Optionu2 q2fp"g 0,(,f2f"lw fq2'):g2u2'"# 0u2' ff&1"e q2"e m(m.m& Initialize Babyl Buffer)w ' et2 fsDFileu2 ' "# q2"n et2' 1m(m.m& Read Filename)Mail filef"ew'u2 et2 fsDFileu2 0u3' @fn| bf"nw1'*(m(m.m& Initialize Babyl Buffer))u1 qBabyl G Done Hookf"nu2 q1m2'w | 0,fsZfsBoundw qBabyl Append Option&1"n zj -@f  :d 0a-"n :i*Babyl bug: no ^_ at end of filefsErr i'' "# j s' q3"e .,.fsBoundw fn hk  1:< er @y >w :f~BABYL OPTIONS:"e 1,m(m.mConvert Babyl File Version)w j :s b,.k' "# :f~*APPEND*"e k'' 14.,1a-14."n m(m.m& Babylize Buffer)' 0u..n j ' fsXUName:f6u1 e?[BABYL 1"e fsDFileu1 :i*1 has mail from a previous Babyl crashfsErr' q2fsDFilew e?"n @ft(No new mail) 0fsEchoActivew ' enABYL 1 .,.fsBoundw e[fne] fn hk  :i*AReading Mail file 2fsEchoDisplayw er fsIFileu2 @y @ft  qBabyl XMail Optionf"n u1 e?1"N et1 eief ' qBabyl XMail Append Option"n :i*AAppending to XMail filefsEchoDisplay q1m(m.m& Babyl Append)"e bj er1 fy -@fk 0,0a-14."e -d' eihpef b,.k' fsOFileu1 @ft 1  0fsEchoActivew' "# :i*APrepending to XMail filefsEchoDisplay zj er1 @a eihpef .,zk fsOFileu1 @ft 1  0fsEchoActive''w :f~BABYL OPTIONS:"e 1,m(m.mConvert Babyl File Version)w j:s b,.k' "# :f~*APPEND*"e k'' 14.,1a-14."n m(m.m& Babylize Buffer)' j qBABYL Append Option&2"n   -.  :s$w ' 0u..n qBabyl Append Option&1"n :i*AAppending to Babyl filefsEchoDisplay q3m(m.m& Babyl Append)"n @ft 3  0fsEchoActivew' "# m(m.m# Babyl S)'' "# m(m.m# Babyl S)' ed2 [1[2 0,(fsZ)fsBoundw m(m.m& Reformed Bit)"n m(m.m& Bounds Of Original Header)u2u1 q1,q2x1 fq1"e m(m.m& Babyl Select Message) 0m(m.m& Reformed Bit)w' "# :g1u2 0u2 m(m.m& Bounds Of Header)k g1'' m(m.m& Remove Basic Label)bad-headerw ff"e m(m.m& Reform Header)' m(m.m& Babyl Select Message) ~[1 0[2 [3 1f[FnamSyntax etDSK: fsHSname fsDSnamew fsXUname:f6u1 et1 BABYL 0fo..qBabyl Default Filef"n fsDFile'w ff&2"e 0[Buffer Filenames 4m(m.m& Read Filename)Babyl fileu1 ]Buffer Filenames q1"e '' "# u1' 1,m(m.m# Babyl Q) :i*CfsEchoDisplay et1 fsDFilem(m.m& Read Babyl File)"n ff&1"e 1u2'' fsDFileuBabyl Filenames 0uBuffer Filenames 0u:.b(qBuffer Index+2) -1uInhibit Write m(m.mConvert Babyl File Version)u3 m(m.m& Reset Babyl Options) qBabyl Owner Optionf"n u1 f~(fsXUname:f6)1"n 0u2''w q2"n fsDFilef(uBuffer Filenames )u:.b(qBuffer Index+2) 0uInhibit Write q3"n @m(m.m# Babyl S)'' qBabyl Append Option&1"n zj -1'"# j's 0u..h m(m.m# Babyl G) qBabyl O Filename"e et XMAIL fsDFileuBabyl O Filename' qNumber of Babyl Messages"e fg :ftBabyl file has no messages. Want to exit?  m(m.m& Yes or No)"n 0u..h :@m(m.m# Babyl Q)' ftOK, pick another Babyl file. @:m(m.m# Babyl I)' :m(m.m& Babyl Select Message).[1 0fsVB[2 0fsVZ[3 [4 ff&1"e 1m(m.m# Babyl J) m(m.m& Check Message Label)deleted"e ' 1:m(m.m# Babyl N)' "l qNumber Of Babyl Messagesm(m.m# Babyl J) m(m.m& Check Message Label)deleted"e ' 1:m(m.m# Babyl P)' -qMessage Numberf"gu4 qNumber Of Babyl Messages--q4f"l+q4u4 zj -q4f"l:s  "e oNoSuch''w'"#w q4f"g:s  "e oNoSuch''w'' "#w -(qMessage Number-)f"lw j f"ew 1':s  "e oNoSuch'' "#-u4 q4f"l:s  "e !NoSuch! q1j q2fsVBw q3fsVZw :i*No Such Message f;Babyl-Command-Abort''w''w f"ew 1'uMessage Number m(m.m& Babyl Select Message) v[1[2 m(m.m& Push Message) ff&1*"e m(m.m& Babyl Select Message)' "# m(m.m# Babyl J)' m(m.m& Add Basic Label)deletedw "e m(m.m& Bounds of Header)w' .,zx1 zj 0a-10"n :i11 ' qBabyl K Textu2 :iBabyl K Text2 1 f:m(m.mLabel Message)r[1[2[3 :f "g :i*'"# 0'u1 "l m(m.m& Babyl Get Message Labels)f"ew :i*Not labeledfsErr'( )m(m.m& Make Babyl Label Table)[Babyl Labels Option @fn| qBabyl Labels OptionfsBKillw| :i2Remove 0u3' "# :i2Attach 1u3' m(m.m& Use Babyl Label Table) q3,q1m(m.m& Read Babyl Label)2 label: f"e'u1 f m(m.m& Label Babyl Message)1' [1[2[3[4 "e ' "l -m(m.m# Babyl P)' -u1 qMessage Numberu2 q2u3 .u4 @fn| m(m.m& Check Message Label)deleted"n q2m(m.m# Babyl J) q2-q3"e q4:jw'' | m.m# Babyl ^N < ,1mN m(m.m& Check Message Label)deleted"e qMessage Numberu2 %1;' > [1[2[3 qBabyl O Filenamef"ew'f[DFile ff&2"e 5,f Add message tou1 et1 fsDFileuBabyl O Filename' fsQPPtr( 0f[VB 0f[VZ .:\u1 -s  c .,(s).fsBoundariesw e[ e\ fn 1j e^ e] q..ou1 f[BBind fsOSTeco-2"e 1:"n oNEW' @y' "# e?"e er @y' "# !NEW! iBABYL OPTIONS: Version:5 Append:1 '' m(m.mConvert Babyl File Version)w j :s Append:+1U3 Q3"e \&1"n zj -@f  k 0a- "e -d'' "# j s ' Q3"n j s' .(g1)j l :fb, deleted,"l fk+1d' 0l :fb, recent,"e 2c i recent,' eihpef )fsQPUnwind qBabyl O Done Hookf"nu1 m1'w 1,m(m.m& Label Babyl Message)filed "e ' "l -:m(m.m# Babyl N)' -[1[2 qMessage Numberu2 @fn| m(m.m& Check Message Label)deleted"n q2:m(m.m# Babyl J)' | m.m# Babyl ^P < 1mP m(m.m& Check Message Label)deleted"e qMessage Numberu2 %1;' > qBuffer Filenames"n ff&1"e 1,m(m.m& Babyl Expunge)' m(m.m# Babyl S)' 0,fsZfsBoundw hk f? 0fsXModifiedw 0fsModifiedw 0uBabyl Filenames 0uBuffer Filenames 0u:.b(qBuffer Index+2) :iBabyl Modified Messages fq*Survey* Buffer"G q*Survey* Buffer[..o hk 0fsModifiedw 0fsXModifiedw ]..o ' ff&2"n ' f;Babyl-Catchm.m& Label Babyl Message 1,mLanswered 1,-1mLreply qBuffer Filenamesf"ew '[1 f[DFile fsModified"e :i*CfsEchoDisplay @ft(No changes need to be written)  0fsEchoActivew ' 1,m(m.mWrite File)1 [1 :i*To continue editing this message use the C command( )[Abort Resumption Message .( 1m(m.m& Parse Header) )j fsQPPtr( (-3"'e)(-4"'e)"n 0'"# 1',1m(m.m& Push to Edit Mail) fm(m.m& Setup Reply Template) qBabyl R Hookf"nu1 m1'w m(m.mEdit and Mail Buffer) )fsQPUnwind qBabyl R Done Hookf"nu1 m1'w  [1[2[3[4[5[6 1f[BothCase 1f[^PCase 0u0 0fsWindoww hk iTo:  qReply-to:u0 fq0"g g0' "# qFrom:u0 fq0"g g0'' zj ff&1"n '-1"n qTo:u1 fq1"g icc:  gTo:' qCc:u1 fq1"g icc:  gCc:'' zu5 zj qBabyl CC Tof"nu1 icc:  g1 i  ' fsOSTeco"n zj qBabyl Fcc Tof"nu1 iFcc:  g1 i  '' zj -2f= "n i  ' zj qSubject:u1 fq1"g .(iRe: 1)j l.,zk' zj gBabyl Header/Text Separator i  -3"e @fn|@m(m.m^R Babyl Yank)w|' -4"e @fn|16@m(m.m^R Babyl Yank)w|' qBabyl Trim Recipient List"e ' z-q5u5 fsBConsu2 m.m& Process Recipient Field fsMachine:f6,q2 mpTO fq2u3 fsMachine:f6,q2 mpCC q..ou4 q2u..o j fq0"g q3j .,zfsBoundariesw' fsXUName:f6u1 0s 1@ qBabyl Dont Reply Tou1 q1fp"g 0s1' j i  < .-z; .u6 1a-*"e 2k !' 5f~INFO-"e 2k !' 7f~BBOARD@"e 2k !' q1"n 2r 2f:fb"l q6j 2k !' q6j' 2l > j 2d   l  l  :i1 < .-z; ff~1"e 2k' "# x1 2l' > j 0fsVBw < .@; -2l x1 .( 2l <.-z; ff~1"e 2k'"# 2l'> )j > j .,q3fsBoundariesw z"g iTo:  < .u1 k :l i,  fsSHPOS-70"g q1j i ' :l 2d .-z; > -2d i ' 0fsVZw .-z"l iCc:  < .u1 k :l i,  fsSHPOS-70"g q1j i ' :l 2d .-z; > -2d i ' q4u..o b,(z-q5)k g2 q2fsBKillw zj ff"n m(m.m# Babyl J)' fsz-z"e ftEnd of file  ' [0[1 [3[4[5 ft #  qMessage Number= m(m.m& Bounds Of Header)u4u5 q5j 1u3 q5f[vb j4l .-b-200"g b+200j .u1 :l fshpos-120"g q1j '"# l '' .-q4"l q4j ' z-.-150"l zj ' b,.t -2f= "n ft ' :m(m.m& Babyl --MORE--)|[0[1 ff&1"n 1u..h m(m.m# Babyl J) m(m.m& Check Message Label)deleted"e :i*Message not deletedf;Babyl-Command-Abort'' "# .u0 qMessage Numberu1 m.m# Babyl ^P f"n q1m(m.m# Babyl J) q0j :i*No previous deleted message f;Babyl-Command-Abort'' m(m.m& Remove Basic Label)deletedw f:m(m.mMail With Template)fsVB+(fsWindow)fsWindoww 0,fsZfsBoundw fm(m.m^R Extended Command)w [0[1[2 ff&1"n m(m.m# Babyl J)' .( zj 0a-10"n i ' gBabyl K Text )j :iBabyl K Text qMessage Number:\u0 :fo..qBabyl Modified Messagesu1 q:..q(%1)u2 :i:..q(q1)20m0  qNumber of Babyl Messages:\[1 :i551 0~[1 m(m.m& Bounds Of Header)u1u1 fnq1j .: :s"l r'"# zj' f[Fill Column @m(m.m^R Fill Indented Mail Region)w f:m(m.mthe Babyl Helper)f:m(m.mNext Labeled Message)[1[2[f @ft Type a Babyl command character to describe, "*" for all of them:  fiu1 q1-*"n 1,q1m(m.m& Babyl Macro Get) ' ft Single-character Babyl commands:  m.m& Babyl Macro Getu2 m.m& Maybe Flush Outputuf A-1u1 Z-A+1< 2,%1m2 mf > ft0-9: Accumulate a numeric argument  -1u1 0< 2,%1m2 mf > 9u1 A-9-1< 2,%1m2 mf > Zu1 a-Z-1< 2,%1m2 mf > zu1 z< 2,%1m2 mf > ft Extended commands (invoked with "X"):  !''! m(m.m& Get Library Pointer)BABYL m(m.m& List One File)C  fq5"g 0,fq5-1:g5u5 0' :i*C fsEchoDisplayw [1 0,fsZ fsBoundariesw :s"e zj -s' "# r' fsZ-.fsVZw -:s "e 0fsVZw :s "e :i*Babyl bug: file empty when should not befsErr' :m(m.m& Babyl Select Message)' :s *** EOOH *** "e :i*Babyl bug: no EOOH linefsErr' .fsVBw }[0[1 0[2 [3[4[5[x qMessage Numberu5 0,fsZfsBoundw .u0 j 0s, deleted, < :s; 0l -4f=  "n l !' 0l .-3,(@:flc).f(k)u1 q0,.fux,q0-q1fu0w .-q0"l q5-1u5' %2w > j 0s, recent, < :s; .u4 0l -4f=  "n l !' q4j -8d q0,.fux,q0-8fu0w > q0:jw qNumber of Babyl Messages-q2f(uNumber of Babyl Messages ),q5f:uMessage Numberw .[0[1[2 0f[vb 0f[vz :s"l r' .u2 0s  0u1 j < .,q2:fb; %1w > q1uMessage Number q0jq0,q1( .:\u0 fsWindow:\u1 @fn| 0fsVBw 0fsVZw 0:j"e zj' m(m.m& Babyl Select Message) 0-b"l b'"# 0-z"g z'"# 0''j 1-b"l b'"# 1-z"g z'"# 1''fsWindoww | [Message Number )u1u0 :[1 0f[VB 0f[VZ -:s "e j'"# l' :s *** EOOH *** w .u1 4f~MSG:"e l < 8f~DISTRIB:@:; l > < 8f~EXPIRES:@:; l >' :fb:@f"ew :i*Bad header -- not ITS or NET stylefsErr '+1"e :s  q1,.' l <4f~TO: @:; l> <4f~CC: @:; l> q1,.0f[VB 0f[VZ -:s "e j'"# 2l' .( 2:rw :s *** EOOH ***  "l -l' ),.[0[1[2[3[4[5[6[7[8[9 [..j :i*Babyl[Editor Name m(m.m& Babyl Select Message) fsModeMacm.vPre-Babyl Mode Macrow m.m& Babyl Set Mode Linef[ModeMac fs^REnteru0 @:i*| qPre-Babyl Mode Macrof[ModeMacro 0|f[^REnter 0u3 -1u0 m.m& Reformed Bitu2 m.m& Reform Headeru4 m.m& Remove Basic Labelu6 m.m& Babyl Macro Getu7 qBabyl Command Hookf"ew :i*'u8 qBabyl No Reformation Optionu9 ff"L u1 @ft 1.  0fsEchoActive'w >y[1[2 fsReReadw fiu1 -4110."E ?u1' q1:i2 q1-33"L q1+100.u2 :i2^2' "# q1-127"E :i2'' "E 1,m.m# Babyl 2f"N 'w' q1-8"E :i2' "# q1-9"E :i2' "# q1-10"E :i2' "# q1-13"E :i2' "# q1-27"E :i2' "# q1-32"E :i2'''''' "E :i*2 is not a Babyl command f;Babyl-Command-Abort ' 1,m.m~DOC~ # Babyl 2f"Ew -1"G  ' :i*- is Not a Babyl Command.'u1 -1"e ft2:  f[BBind g1 j:@f k d < :s; b,.-1t b,.k .,(s -d).fx1 0:g1-"e m1' "# 2,m(m.mWhere Is)1"e ft1'' > ft..o  ' "# 2,(f1f"L wfq1'):g1u1 ft2: 1  ' [1[2 .-z"n .( 0u2 <%2wl.-z;> )j ft( q2:= z-./(fsWidth*q2) ft lines)--MORE--' [1[2 0fsVBw -s  l .fsVBw f1 0fsVZw s r z-.fsVZw -2f= "e 2r'"# i  2r' -@f -:d 1@:< 1,m(m.m& Parse Header) >"n m(m.m& Add Basic Label)bad-headerw j s *** EOOH ***  .fsVBw ' m(m.m& Babyl Process Sender Fields) z-.u1 j :l .,(s *** EOOH ***  fkc).k 2l qBabyl No Original Option"e .,z-q1x2 -l g2 l' .fsVBw f[BBind m(m.m& Form Header) zj i  hx2 f]BBind g2 .-2,z-q1k j 0uParsed Message Number  [1[2[3[4 :fo..qParsed Message Number+1u1 :fo..qMessage Number+1u2 "n q:..q(q1)-q:..q(q2)"e m(m.m& Bounds Of Header)jw ' "# q:..q(q2)u:..q(q1)'' "# 0u:..q(q1)' :i1 q1uDate: q1uFrom: q1uSender: q1uSubject: q1uTo: q1uCc: q1uMessage-id: q1uKeywords: q1uIn-Reply-to: q1uReply-to: q1uRedistributed-To: q1uRedistributed-By: q1uRedistributed-Date: q1uMSG: q1uMail-from: q1uRcvd-Date: q1uUnknown: 0f[VB -s  l .fsVBw s *** EOOH ***  4f=MSG:"e 4c @f r @xMSG: l < 8f~DISTRIB:@:; 8c @f r @xTo: l > < 8f~EXPIRES:@:; l > ' .u1 :fb@:f"ew ff&2"n j -1fsErrThrow' :i*Bad header -- not ITS or NET stylefsErr'+1"e s  r 0x4 :iFrom:4  c 9f=(Sent by "e 9c .,(fb) ).-2x4 :iSender:4 ' .u2 :fb Re: "l @f l xSubject: 5r' "# :l' q2,.x4 :iDate:4  l < 4f~TO: @:; 3c @f l @xTo: l > < 4f~CC: @:; 3c @f l @xcc: l > ' "# q1j :s "e zj'"# @f d 2r' fsZ-.f[VZ q1j < .-z; .,(:fb:"e ff&2"n j -1fsErrThrow' :i*Bad header -- no colon in fieldfsErr' r -@f r).x1 c f~1Sent-by"e :i1Sender' f~1Received-date"e :i1Rcvd-Date' f~1Re"e :i1Subject' @f l x2 < l .-z; 1af :; @x2 > 0fo..q1:f"nu3 fq3"g :i*3 2'"# q2'u1:' "#w .(g1i:g2),.@fxUnknown:' > f]VZ 2:cw ' [0[1[2[3 f[BBind @:i*|j @f kzj -@f k|[S gSender: mS hfx2 gReply-to: mS hfx3 gFrom: mS j :s<"n .-1u1 :s>"e ' .-z"n ' -d q1jd q1,zfx1' "# :i1' mS hfx0 g1 mS hfx1 fq1"e f~03"n q3u1' :i3' "# f~13"e :i3'' fq1"e f~02"e :i2'' "# f~12"e :i2'' fq1"g :iFrom:0 <1> ' "# :iFrom:0 ' fq2"e q2uSender:' "# :iSender:2 ' fq3"e q3uReply-to:' "# :iReply-to:3 '  [1[2[3[4[5[6[7 [P .f[VB fsZ-.f[VZ fsBCONSu5 @fn|q5fsBKill| fsMachine:f6u7 fsOSTeco"E :i7MIT-7 ' qBabyl Punt Missing Hosts"E 0u4 :@i1|:i2 fq2::"G 0' .,(g2:).( j :s@ at "l @f l .,( @:f ,<>()l ).x4' )k q4| m1Redistributed-by"E m1From"E m1Sender"E fqMail-from:"G f[BBind gMail-from: qBabyl ..D[..d 0u4 j :sMAIL-FROM: ARPANET HOST "l @flf(x4)l 9f~ RCVD AT "n 0u4'' "# j :sMAIL-FROM: "l @flf(x4)l 9f~ RCVD AT "n .-z"n 0u4'''' ]..d f]BBind' q4"E q7u4 ''''' :@i6|:i2 fq2:"E' i2: 5-(fsHPos)f"lw0'+1,40.i .(g2:)j l <.-z;i l>| :@i1|:i2 fq2:"E' m62| qBabyl Punt Missing Hosts"E m.m& Process Recipient FielduP :@i1|1 1:< q4,q5mP2w >f"L u3 :i* 3 in 2:-fieldfg' zj|' m6MSG fqDate:"n iDate:  .u2 gDate: fsOSTeco"n q2j fsFDConvertu3 :f"e q2,.k 332221000000.,q3fsFDConvert -s  i ' zj'' m1From fqSender:"n qSender:u2 f~From:2"n m1Sender'' m1Reply-To m1Redistributed-By m1Redistributed-To m1To m1cc fqSubject:"n .(m6Subject)j 8diRe:  0fo..qBabyl Remove Subject Labels"n < @f k 0,1a-!"n 0,1a-{"n 1;'' 0,1a-!"e d' 0,1a-{"e .,(:fb};).k' >' < @f k 3f~Re:@:; 3d > zj' fqUnknown:"G gUnknown: fkc < .-z; :fb:w 5-(fsHPos)f"lw0'+1,40.i l > ' i  {fsZ-(z-b)"n :i*Bounds not widefsErr' [1 fsDFilew hk m.m& Yes or No !RETRY! e?"n fsDFileu1 ftThere is no Babyl file 1. Do you want to create one?  my"n fsDFile, m(m.mCreate Babyl File)' "# ftWant to specify another filename?  my"n m(m.m& Read Filename)Babyl fileu1 q1"n et1 oRETRY'' :i*No Babyl file f;Babyl-Catch'' :i*AReading Babyl filefsEchoDisplay er fsIFileu1 @ft 1 @y @ft  0fsXModifiedw 0fsModifiedw j 1f~BABYL OPTIONS: "e zj -@f  :d 0a-"n :i*Babyl bug: no ^_ at end of filefsErr i' j 1' QBefore Babylizing File HookF"N U0 M0'W iBABYL OPTIONS: Version:5  10f~*APPEND* "e 10d jl iAppend  ' j s .fsVBw m(m.m& Babylize Buffer) 0,fsZfsBoundariesw 0[1[2[3[4 ff&1"n '"# 5'u2 j :ff~BABYL OPTIONS:"n :i*Not a Babyl file (no BABYL OPTIONS section)fsErr' :s Version:+1"n :i*No version found in BABYL OPTIONS sectionfsErr' @f l 1a:"d :i*Version must start with a digitfsErr' \u1 q1-q2"e j 0' ff&2"n fsQPPtru4 hfx3 f[BBind g3 0u3' q1,q2m(m.m& Convert Babyl File Version) 0,(fsZ)fsBoundariesw j :s Version:+1"n :i*No version found in BABYL OPTIONS section after conversion!!fsErr' :k q2\ ff&2"n hfx3 q4fsQPUnwindw g3 0u3' j ft Done. 1 [3[4 fsQPPtr[0 0,(fsZ)fsBoundariesw :\u3 :\u4 ft Converting Babyl file from version 3 to 4... :oCV 3 to 4 ft by steps: -"l --1"e :i*I do not know how to convert 3 to 4fsErr' ,+1m(m.m& Convert Babyl File Version) +1,:m(m.m& Convert Babyl File Version)' --1"e :i*I do not know how to convert 3 to 4fsErr' q0fsQPUnwindw ,-1m(m.m& Convert Babyl File Version) -1,:m(m.m& Convert Babyl File Version) !CV 3 to 4! [1 j< :s  ; .u1 :s *** EOOH *** +2"e q1j l i*** EOOH ***  ' q1j >  !CV 4 to 3!  !CV 4 to 5! [1[2[3 j :s Keywords:+1"e fk+2d iLabels:' j< :s ; @f  k .-z; .u1 < :fb{; -d -@f k i,  :fb}"e :i*Oops -- no } after label!!fsErr' -d > :l -@f k i, q1+1j 8f[IBase \u2 f]IBase q1+6j i, q2&4"n q1+6j i bad-header,' q2&2"e q1+6j i unseen,' q2&10."n q1+6j i answered,' q2&20."n q1+6j i filed,' q1j 1a-D"e q1+6j i deleted,' q1j 5d q2&1+0i >  !CV 5 to 4! [1[2[3 j :s Labels:+1"e fk+2d iKeywords:' j< :s ; @f  k .-z; 0l :fb, recent,"l fk+1d' 0l 1a-0u2 d 0l :fb, unseen,"l fk+1d'"# q22u2' 0l :fb, bad-header,"l fk+1d q24u2' 0l :fb, answered,,,+1"e fk+1d q210.u2' 0l :fb, filed,,,+1"e fk+1d q220.u2' 8[..e 10000.+q2:\u2 ]..e 0l :fb, deleted,"l fk+1d 0:f2D' 0l :fb,,"e :i*Ooops--broken assumptionfsErr' -d 0l g2 0s,  <:fb; } {> 0l5c 1a-}"e d' :l -d 0f-5"g i}' > q[1 bj 0f[VB 0a-"n :i*Must have Control-_ just above VB fsErr' f]VB zj 0f[VZ 14.,1a-14."n :i*Must have Control-L just below VZ fsErr' f]VZ fsOSTeco"n m(m.m& ITSify TNX Mail)' bj @f k 0s < i 0, recent, unseen,, *** EOOH ***  @f k :s; > zj -@f k -36f= 0, recent, unseen,, *** EOOH ***"n :i*Mail file does not end with Control-_ fsErrw' -36d qBabyl Autolabel Messages"n bj m(m.m& AutoLabel Subject Labels)' bj o0[1 .[2 -[3 :s"l r' 0s  0uParsed Message Number ff&1"e fsVZu3 0,.fsBoundw j <:s;%1> q1uMessage Number q3fsVZw <:s;%1> q1u3 0fsVZw <:s;%1> q1uNumber of Babyl Messages q2j' :iBabyl Modified Messages fq*Survey* Buffer"G q*Survey* Buffer[..o hk 0fsModifiedw 0fsXModifiedw ]..o ' q1"g m(m.m& Babyl Select Message)' q3[1[2 0f[VB 0f[VZ jl 0m.vBabyl XMail Optionw 0m.vBabyl XMail Append Optionw 0m.vBabyl MAIL Optionw 0m.vBabyl Version Optionw 0m.vBabyl No Original Optionw 0m.vBabyl Owner Optionw 0m.vBabyl No Reformation Option 0m.vBabyl Labels Option fsOSTeco"E 0 '"# 2 ' m.vBabyl Append Optionw < 1a-@; :fb:"l r 0x1 c@f l :x2 1a"D \w @f l (1a)-"E 2u2 ''' "# :x1 1u2' l 1:< q2uBabyl 1 Option >"n @ft (1 is not a Babyl option) 0fsEchoActivew' > [1[2 j < .-z; .u2 :fb,; \u1 0,1a-;@:; l z-.-q1u1 q1"l 0u1 ' <9f~Mail from@:; l> q2,.k <.,z-q1:fb;^_> z-q1j i @f k > .-z"e ,0a-"e j '' :i*Bad message filefsErr[1[2[3[4[5 .u1 fnq1j [1 qBabyl Filenamesu1 qBuffer Filenames"e :i11 (RO)' qNumber Of Babyl Messages:\u2 b"e fsZ-z"e :i3Babyl (Messages 1-2) 1  f=..j3"n q3u..j' '' qMessage Number:\u3 0f[VB -s lc .,(fb,,).-1x4 :@x4 0,fq4-1:g4u4 2-3"e :i44, last' :i5Babyl (Message 3/24) 1  f=..j5"n q5u..j' .:\[1 fn1j 0f[VB -s lc .,(fb,,).-1x1 :@x1 0,fq1-1:g1u1 fq1"g q1' 00f[VB .[0 fnq0j [1[2 -s l :fb, deleted,"l Du2' "# :fb, unseen,"l -u2' "# :fb, recent,"l +u2' "# :u2''' 0l fb,, :x1 fq1"g 1,fq1-1:g1u1 :i1{1} ' q2,q1[b[f[k m.m& Maybe Flush Outputuf (:f "g :i*')m(m.m& Read Babyl Label)Survey messages labeled: f"e'uk m.m& Babyl Survey Several Messagesub 0mb 1f [0[1[2[3[4 :f "g :i*( :i1 )u0' "# 0u0 0u1' m(m.m& Push Message) ff&1"e 1m(m.m# Babyl J)w qNumber of Babyl Messagesu2 1u3' "# "l -u2 -1u3' "e 1m(m.m# Babyl J)w qNumber of Babyl Messagesu2 -1u3' "g u2 1u3'' q3"g :i4Add'"# :i4Remove' q0m(m.m& Read Babyl Label)Consider messages labeled: f"e'u0 q1m(m.m& Read Babyl Label)4 label: f"e'u1 m.m& Label Babyl Message 1,q2m(m.m& Map Over Labeled Messages)1,q3mL10 [k (:f "g :i*')m(m.m& Read Babyl Label)Delete messages labeled: f"e'uk 0[Babyl N After D m.m# Babyl D fm(m.m& Label Map Command)kmd [k (:f "g :i*')m(m.m& Read Babyl Label)Undelete messages labeled: f"e'uk m.m& Remove Basic Label fm(m.m& Label Map Command)k mudeletedw f[DFile [k[1 (:f "g :i*')m(m.m& Read Babyl Label)Output messages labeled: f"e'uk etk XMAIL 1m(m.m& Read Filename)Output Labeled Messages to filef"ew'u1 et1 fsDFile[Babyl O Filename @ftMark messages as deleted?  1m(m.m& Yes Or No)u1 0[Babyl N After D m.m# Babyl O q1"n m.m# Babyl D fm(m.m& Label Map Command)k1,mOwmD ' fm(m.m& Label Map Command)k1,mO [.0[.2 :i*( :i.2 )u.0 m(m.m& Push Message) ff&1"e 1m(m.m# Babyl J)w 1,z'"# 1,'( )m(m.m& Map Over Labeled Messages).2.0 ftDone.  [.0[.1[.2[.3 :i*( :i.0 )u.1 m.m& Babyl Select Messageu.2 qMessage Number-1u.3 @fn| q.3umessage number | 0fsVBw 0fsVZw -s 0s, .0, < :@fl :cw .-z; 1a- "n !' %.3w l :fb"e !' q.3uMessage Number m.2 m.1 0s, .0, 0fsVZw > [0[1[2[3 :i0 z-.:\u1 z-(fsVB):\u3 @fn| z-1:j"e j' z-3fsVBw | 0fsVBw -s  l "l :fb, 0,"e "n ' @ft Not labeled 0 to begin with 0fsEchoActivew ' fk+1d' "# :fb, 0,"l "n ' @ft Already labeled 0 0fsEchoActivew ' :l f~0deleted"e 0l2c' "# f~0unseen"e 0l2c' "# f~0recent"e 0l2c''' i 0,' qMessage Number:\u0 qBabyl Modified Messagesu2 :iBabyl Modified Messages20m0  [0[1[2 :i0 z-.:\u1 z-(fsVB):\u2 @fn| z-1:j"e j' z-2fsVBw | 0fsVBw -s l :fb, 0,"l -1' 0l2c i 0, qMessage Number:\u0 :fo..qBabyl Modified Messagesu1 q:..q(%1)u2 :i:..q(q1)20m0  0[0[1[2 :i0 z-.:\u1 z-(fsVB):\u2 @fn| z-1:j"e j' z-2fsVBw | 0fsVBw -s l :fb, 0,"e 0' fk+1d qMessage Number:\u0 :fo..qBabyl Modified Messagesu1 q:..q(%1)u2 :i:..q(q1)20m0  -1:i*[0 .[1 fnq1j 0f[VB -s l :fb, 0,"'l0f[VB .[1 fnq1j -s l 1a-1"'e( ff&1"n "n f1'"# f0'' )ff"n '"# 1' m(m.mLabel Message)RemindNow m(m.mSurvey Labeled Messages)RemindNow z[k[0 :f "g :ik'"# 0uk' fqk:"g ff&1"e qBabyl Last | Labeluk' "# m(m.m& Read Babyl Label)Next message labeled: f"e'uk'' qkuBabyl Last | Label qMessage Numberu0 @m(m.m# Babyl ^N) 1,1 m(m.m& Map Over Labeled Messages)wk m(m.m& Babyl Select Message) m(m.m& Check Message Label)k"e q0m(m.m# Babyl J) @ft(No more {k}) 0fsEchoActivew' 0[0 [1 .[2 fnq2j 0f[VB 0f[VZ m.m& Label Babyl Message < :s Subject: Re: ; < @f l 0,1a-!"n 0,1a-{"n 1;'' 0,1a-!"e .-z(1,mLRemindNow)+z+1j 1u0' 0,1a-{"e .+1,(:fb};).-1x1 .-z(1,mL1)+zj 1u0' > > q0"n 1m.vBabyl Remove Subject Labelsw' [1[2[3[4[V 5fsQVectoru1 1u:1(0) f[BBind g() @:iV| [2[3 @:fo12u3 q3"l -q3*5j q:1(0)*5,0i q2u:1(-q3)' | i, j 0u4 < @f l .-z; .u2 @:f,=l .(-@f l q2,.x2)j c fq2"e !' 0a-="e q2u4 !' q1[..o q2mV q4"n q4mV :i34 = 2 q3mV q2m.vBabyl 4 Labelabw q2m.vBabyl 3 Labelabw' ]..o 0u4 > q1[1 qBabyl Labels Optionu1 fq1"l :i1RemindNow,filed,answered,reply' q1fp-1"n :i11,deleted,unseen,recent,bad-header q1m(m.m& Make Babyl Label Table)u1 q1uBabyl Labels Option' q1(]1)[CRL List :i*[CRL Prefix :o:i*[0 [1 1[2 0f[ModeMacro m(m.m& Use Babyl Label Table) fq1:"g 0u2 2,m(m.m& Read Command Name)0f"ew :i*CfsEchoDisplayw 0'u1' 0fo..qBabyl 1 Labelabf"nu1'w f"n 0u2' q2,q1m(m.m& Add to Labels Option)f"e'w q1w[0 :foBabyl Labels Option0"g 1' "n @ft Add 0 to label list?  1m(m.m& Yes or No)f"e'w' z-.[1 z-(fsVB)[2 @fn|1:w| 0fsVBw j :ff~BABYL OPTIONS:"n :i*There is no BABYL OPTIONS sectionfsErr' :s Labels:+2"n jl iLabels:  0:l' .( g0 @f k 13,1a-13"n i,' )j qBabyl Labels OptionfsBKillw :xBabyl Labels Option 1[1[2 0f[VZ z-.:\u1 z-(fsVB):\u2 0fsVBw @fn|0fsVBw 0fsVZw z-1j z-2fsVBw| 0f[ModeMacro j :ff~BABYL OPTIONS:"n :i*There is no BABYL OPTIONS sectionfsErr' j :s Labels:+2"e :x2' "# :i2''' fsQPPtr( f[BBind g2 :ft z+1+50/(fsWidth+1)+1f( ft-------- )f[Linesw 0u..h @:i*| 0fsLinesw m(m.mDescribe)Edit Labels List  |f[HelpMacro :i*Edit Labels List[..j 0[Auto Fill Mode  j <:l.-z;k> hx2 )fsQPUnwindw j:s Labels:+2"e :k g2' "# jl iLabels:2  ' q2uBabyl Labels Option |[0[1 :f "g :i*( :i1 )u0' "# 1,f Label messages containing string: f"e'u0 0u1' fq0:"g 1,m(m.m& Read Line)For messages containing string: f"e'u0' q1m(m.m& Read Babyl Label)Attach label: f"e'u1 m(m.m& Push Message) m.m# Babyl ^F m.m& Label Babyl Message ff&1"n 1m(m.m# Babyl J)w' j 0fsVBw -l < 1::@; 1,mL1w zj > ftDone.  sff-1"e 2,m(m.m& Babyl Survey Several Messages)' "# ff-3"e m(m.m# Babyl J) 2,(-+1)m(m.m& Babyl Survey Several Messages)'' q*Survey* Bufferf"n[1 fq1'"e @m(m.m# Babyl ^S)w q*Survey* Bufferf"n[1 fq1'"e  '' @fn| m(m.mSelect Buffer)*Babyl*| q:.b( :i**Babyl* m(m.m& Find Buffer)+4 )m.vSvMenu Babyl Bufferw m(m.mSelect Buffer)*Survey* q..o m.vSvMenu Bufferw f~ModeSurvey"e m(m.m& Get Library Pointer)BABYL-(0fo..qBabyl Library Pointer)"n m(m.mSurvey Mode)' qBABYL Loaded-qPrevious BABYL Loaded"N m(m.mSurvey Mode)'' "# m(m.mSurvey Mode)' 0fo..qWindow 1 Buffer"n [Window 1 Buffer [Window 1 Pointer [Window 2 Buffer [Window 2 Pointer' qBabyl Command Hookf"n[1 7m(q1(]1))'w :i*Babyl [Editor Name :i*Babyl [..j 1fsModeChangew m(m.m& Jump To Current Survey Line)  [..o m(m.m& Survey-Select Message) [1 qBABYL Loadedm.vPrevious BABYL Loadedw m(m.m& Get Library Pointer)BABYLm.vBabyl Library Pointerw m(m.m& Init Buffer Locals) 1,(m.m& SvMenu ^RNormal Macro)m.QFS^RNormal m.m^R SvMenu Argumentu1 1,q1m.q- 1,q1m.q0 1,q1m.q1 1,q1m.q2 1,q1m.q3 1,q1m.q4 1,q1m.q5 1,q1m.q6 1,q1m.q7 1,q1m.q8 1,q1m.q9 1,q1m.q, 1,q1m.q+ 1,q1m.q* 1,q1m.q/ Afs^RInitu1 1,q1m.q.D 1,q1m.q 1,(33.fs^RInit)m.q  1,(m.m^R Survey Menu T)m.qT 1m(m.m& Set Mode Line)Survey qBabyl Command Hook[0[1 fsQPPtr[2 0f[ModeMacro f[ModeChange q..0fsEchoOutw 0fsEchoActivew m(m.m& Survey-Select Message)w q0"n 5m0' ff&1"n m(m.m& Bounds Of Header)jw' 0fo..qWindow 2 Size"n m.m^R Other Windowu1 .( @m1w @fn|@m1w| m(m.mSelect Buffer)*Babyl*w )j .-bfsWindoww 0u..h @v q0"n 6m0' q2fsQPUnwindw 0' ff"e .,zx1' "# x1' ft1 q0"n 6m0' 0[1[2[3[4[5 qBabyl Command Hookf"ew :i*'u4 1@:ff"Lu1 @ft 1.  0fsEchoActive'w 1@fn| m(m.m& Jump To Current Survey Line) | [..o f[Window fsQPPtr( [1 0l @f l \u1 qSvMenu Babyl Bufferu..o q1 m(m.m# Babyl J) )fsQPUnwindw :{0f[ReadOnly [9[0[1[2 .[3 [K[B[S[J qMessage Numberu2 0l .-b"E l' @f l z-."E -l @f l' \u3 qBabyl Modified Messagesu9 fq9"g .,.fsBoundariesw g9 \l j<:x1 l .-z; :ff=1"e -k'> hfx9 0,fsZfsBoundariesw m.m& Get Labels for SurveyuK qSvMenu Babyl BufferuB q..ouS m.m# Babyl JuJ m.m& Babyl Resurvey One Messageu0 m9 :iBabyl Modified Messages qBu..o q2mJ qSu..o' j 3,q2:\u1 :s 1"l 0l' "# j 3,q3:\u1 :s 1:"L jl' 0l q3-q2"L l .-z"E -l'' "# -l b-."E l ''' ~fsQPPtr[9 [0[1 q..0&127:i0 q0fsEchoOutw 0fsEchoActw < 2,m.i :fif0123456789-,+*/:; fiu1 :i001 q1fsEchoOutw 0fsEchoActw > @fiu..0 1fs^RArgpw -1u1 fq0< %1:g0"d 3fs^RArgpw 1;' > 0(q9fsQPUnwind)@:m(q..0fs^RIndirectfs^RCMacro)BABYLM[1 ff&2"e :i*To continue editing this message use the C command.( )[Abort Resumption Message' -2"'e,0m(m.m& Push To Edit Mail) qBabyl C Hookf"nu1 m1'w :m(m.mEdit and Mail Buffer):i*To resume, invoke the Send Mail command again with a numeric argument[Abort Resumption Message ff&1"n 1,:m(m.m# Babyl C)' 1,:m(m.m# Babyl M)[1 ff&2"e :i*To continue editing this message use the C command.( )[Abort Resumption Message' -2"'e,1m(m.m& Push To Edit Mail) qCurrent Babyl Template Nameu1 q1"n 0@fo..qBabyl Template 1u1' 0fsWindoww q1"n hk g1' "# hk iTo:  .-2( qBabyl CC Tof"nu1 icc:  g1 i  'w fsOSTeco"n qBabyl Fcc Tof"nu1 iFcc:  g1 i  ''w gBabyl Header/Text Separator i  )j' qBabyl M Hookf"nu1 m1'w :m(m.mEdit and Mail Buffer)[Current Babyl Template Name fsQPPtr( :i*Babyl Template [CRL Prefix q..q[CRL List 8+2,f Template: uCurrent Babyl Template Name )fsQPUnwindw f:m(m.m# Babyl M)}[0 :i*Babyl Template [CRL Prefix q..q[CRL List ff&1"n 8+2'"# 1',f Template: u0 hx*m.vBabyl Template 0w 0[2 qBabyl Edit Mail Hookf"nu2 m2' "# m.m^R Babyl Yank[...Y 1,m.m^R Fill Indented Mail Region[...\ qParagraph Delimiteru2 fq2"g :i22-'"# :i2-' q2[Paragraph Delimiter' !Re-edit! 0u..h fsRGetty"e ft  qBabyl Header/Text Separatoru2 .( j s 2  -l )u2 q2-."l b,q2t ft..a q2,.t' "# b,.t' q2j f+'  qBabyl Require Subjects"n j 0sSubjectReS 0u2 <:s; 12.,(fk)a-12."n !' r @f l 0,1a-:"e 1u2 1;'> q2"e 1,m(m.m& Read Line)Subject: u2 fq2"g j iSubject: 2 ''' z"e 0fsModifiedw 0fsXModifiedw ' 1@:< fsOSTeco"e m(m.m& ITS Mail Buffer)' "# m(m.m& TNX Mail Buffer)' >"n 1fs mode change oRe-edit' 0fsModifiedw 0fsXModifiedw [0[1[2 -1"n fsTopLine"g f~Window 1 Buffer*Babyl*"e 1:<4@m(m.m^R One Window)>w''' fsQPPtr( qPre-*Mail* Buffer[..o 0f[VB 0f[VZ .u0 fnq0j :s"l r'"# zj' .u2 m(m.m& Bounds Of Header)u1j q1,q2x2 -16"n .,q1x1' "# m(m.m& Bounds Of Original Header)x1' )fsQPUnwindw .:w .f[VB fsZ-.f[VZ g1 g2 -4"n j < .-z; 2 f=  "n 4,32i ' l > ' zj 0fsZw 0 f "g i  ' b,.f~Buffer Name*Mail*"n :i*Must be in *Mail* buffer fsErr' 1,m(m.m& Read Line)Subject: [.1 q.1"n fq.1"g .-z(bjl .,(iSubject: .1  ).f w)+zj '' 1[1[2 f~Buffer Name*Mail*"n :i*Must be in *Mail* buffer fsErr' 0f[VB z-.:\u1 fn z-1:j"e zj'  j i  "l :i1Un-To' "# -4"e :i1Cc' "# :i1To'' 1,m(m.m& Read Line)1: u2 q2"n fq2"g "l q2m(m.m& Babyl Delete Recipient)' "# q2,q1m(m.m& Babyl Add Recipient)''' j @f k 14:m(m.m^R Babyl Add To-Recipient)-1:m(m.m^R Babyl Add To-Recipient){[1[2 j :s 1:"l 0:l 0f+fq2-70"g -@f, k i,  ' "# i, '' "# bjl i1:  0:l' i2 u1 j < :s To: Cc: ; < < :fb1; 1af,@ :"l fkc -@f l 0af:,  :"l .,(:fb,"e :l').k'' > l 1af "l 0:l 1;' > > wqPre-*Mail* Buffer"n :i*You are already in the process of sending mailfsErr' q..o[Pre-*Mail* Buffer "n 0fo..qWindow 2 Size"e qWindow 1 Size"N [Window 1 Size ' (fsHeight)-(fsEchoLines)-1/2-1uWindow 1 Size 1:< 4m(m.m^R Two Windows)f >w @fn|1:<@m(m.m^R One Window)f>w| '' m(m.m& Push to Buffer)*Mail* "n f~ModeText"n m(m.mText Mode)' 0uBuffer Filenames fsOSTeco"e !' "# etMAIL.TEMP'' m.m& Set Mode Linef[ModeMac qEditor Name[..j :i..j..j  1fsModeChangew :[Previous Buffer qBuffer Name[0 @:i*|m(m.mSelect Buffer)0|(]0)[..n m(m.mSelect Buffer) : [1[2[3[4[5 g(q..o(f[BBind)) m.m& Process Recipient Field 0[Babyl Strip Local Host qBabyl Header/Text Separatoru2 j 1f[BothCase :s 2 "e :i*No text, just header fsErr' 0u4 -l fsZ-.fsVZw j < .-z; 1af :"l l !' :fb:"l r -@f k 0@fc l !' 1a-15."e k !' :i*Garbage in message header fsErr > q..ou3 f[BBind q..ou2 q3[..o fsMachine:f6,q2 mpTO fq2"g 0l q2[..o j < .-z; fb@ r :fx1 0l 1a-("n 1af"[!'!"l :fb "l 0l i" :l i"!''!'' 0l i( :l i)' 0l iRCPT: :lr i 1 %4w l k > hfx1 ]..o g1' fsMachine:f6,q2 mpCC fq2"g 0l q2[..o j < .-z; fb@ r :fx1 0l 1a-("n 1af"[!'!"l :fb "l 0l i" :l i"!''!'' 0l i( :l i)' 0l iRCPT: :lr i 1 (R-OPTION CC) %4w l k > hfx1 ]..o g1' fsMachine:f6,q2 mpBCC fq2"g 0l q2[..o j < .-z; fb@ r :fx1 0l 1a-("n 1af"[!'!"l :fb "l 0l i" :l i"!''!'' 0l i( :l i)' 0l iRCPT: :lr i 1 (R-OPTION BCC) %4w l k > hfx1 ]..o g1' q4"e :i*No Recipients fsErr' j iFROM-PROGRAM:BABYL FROM-XUNAME: fsXUnamef6 i FROM-UNAME: fsUnamef6 i  j :s FROM:"e 3l iAUTHOR: fsXUnamef6 i '"#  AUTHOR:' j :s H:"l  HEADER-FORCE: @fc' "# 3l iHEADER-FORCE:RFC733 ' j :s S: Re:"l  SUBJECT:' j :s R:"l  REGISTERED: @fc' zj iTEXT;-1  0,(fsZ)fsBoundariesw k f[DFile etDSK:.MAIL.;MAIL > e\ fn e^ eihpef @ft(mail queued) 0fsEchoActivew 0f[VB 0f[VZ g(q..o( f[BBind )) zj -2f= "n i ' m(m.m& Complete TNX Header) f[DFile [1[2[3[4[5 q..ou3 fsMachine:f6u2 f[BBind q..ou4 q3[..o m.m& Process Recipient Field 0[Babyl Strip Local Host q2,q4mpTo q2,q4mpcc q2,q4mpbcc j<:s Bcc:; -4ck <@f @; k>> j <:s Fcc; @f l 1a-:"e c :x2 l-k etDSK:FOO.TXT fsHSnamefsDSnamew et2 0f[VZ m(m.m& Append to TNX Mail File) f]VZ '> 0,fsZfsBoundw q4u..o j etPS: :i5EMACS: fsOSTeco-2"e etDSK: :i5DSK:' e?XMAILR.FLAGS"n etDSK: fsHSnamefsDSnamew < .-z; :x2 q3u..o et[--UNSENT-MAIL--].2 eihpef @ft(Mail to 2 queued) q4u..o 2l > -(@fz5QUEUE-MAIL.SAV)fz' "#  :f:fb@$  :l  2l  j :i2 <.-z; :f:fb@ d :f~2"e :k'"# :fx2 0l 14.i g2 i ' l k> 14.ii  g3 etDSK: fsHSnamefsDSnamew et[--NETWORK-MAIL--]..0 eihpef ER 11.fs IF FDB&7777777777.,11.fs IF FDB EC @ft(mail queued) -(@fz5QUEUE-XMAIL.EXE)fz' 0fsEchoActivew [0[1[3 qBabyl Header/Text Separatoru1 j :s 1 "e :i*No text, just header fsErr' 0:l 0k z-.fsVZ j 5f~Date:"n :s Date:"e iDate:  332221000000.,fsDatefsFDConvertw .-z(-s  i )+zj qBabyl Day of Week Flag"n .-z( b+6j .(s,r),.fx3 2d )+zj i (3)' i  '"# 0l fx1 bj g1' ' j < :s ; -k 2r > fsXUname:f6u0 fsMachine:f6u3 fq3"g :i00 at 3' j :s From:"e l iFrom:  2r .u1 qBabyl User Nameu3 fq3:"g q0u3' g3 qBabyl Personal Nameu3 fq3"g q1j g3 i < :l i>' q1j ' @f l .u1 :l .u3 -:s<"n .-q1:"l c .u1 :s>"'e + (.-q3"'g)"n :i*Unmatched < ... > found in From: field fsErr' r .u3'' q1,q3f~0"n 0l iSender: 0 ' j :s S: Re:"l 0k iSubject:' j < :s To: Cc: ; @f ,k i  <:fb,; @f k i > 0l <:fb, , ; ,  2r> 0l 4c 0,1a-15."e 0,3af "l 0lk 0:l'' >  [0[1[2[3[4[5[6[7[8[9 [..o qBabyl ..D[..d @fn|.-z(j 0,1a-15."e 2d')+z:j| j i  f[VB f[VZ 0s  qBabyl Strip Local Host"N fsMachine:f6u7 fsOSTeco"E :i7 at 7 at MIT-7 ' "# :i7 at 7 '' "# 0u7 ' u8 q..ou9 j <:s"e 0' @f l 0,1a-:@; > c @f k 5-(fsHPos)f"lw0',40.i .u0 < l 0,1af :; 0:k > 0:l .u1 < :s; @f l 0,1a-:"n ! ' c 0k < :l k 0,1af :; > 0fx2 q1j i, g2 .u1 > q0j .f[VB fsZ-q1f[VZ < @f ,k .-z; .u1 i  -1u6 0u2 < @f f"g di 'w .-z; 1au5 q5"b c :o5 r' q6:"g @flu4u3 q4j q3,q4f~at"e oAT' q3-b,q4-b(q8u..o)g9 i  q9u..o ! ' ! in recipientfsErr !' :i*Extra < in recipientfsErr !>! q6"e .-1u6 ! ' :i*Extra > in recipientfsErr !,! r -@f k c 0; !@! -d 0a-32"n i ' iat 1a-32"n i ' !AT! .u2 q8u..o 0f"e q9u..o -2:@fll .u3 -@fll .-q1-1"n :i*Null recipientfsErr' .-b,q3-b(q2j q8u..o)g9' -@f k i@ q9u..o ! !(! fll > q8u..o -@f k q2"e 0f"e q9u..o .u2 -:@fll .u3 -@fll .-q1-1"n :i*Null recipientfsErr' .-b,q3-b(q2j q8u..o)g9' i@ g() q9u..o .-z(q6"g q6j'"# -@f, l' i at  g())+zj q8u..o' -s@ @fc :l i  g(q9[..o q1+1,.x*(]..o)) 0a-,"e -d' i  q9u..o q7"N .-z( -:s7"N fkd ' )+zj ' fsSHPos-70"g q1-b-4"g .(q1j i )+7j'' > -@f, k j j h(20000000.,fsDatefsFDConvert ,i)\ i;000000000000  j e?"e fsDFilem(m.m& Babyl Append)"n jk' z-.fsVZw er fsIFilefsDfilew @y zj 0fsVZw' eihpef b,.k k [1 e[e\fne^e] er1 fsIFLengthu1 q1/5*5-5fsIFAccessw j @fn|b,.k| fsZ-.f[VZ @y zj f]VZ 1:<@:ei>"n 0' fsOFLength-q1"n :i*File changed size??fsErr' q1/5*5-5fsOFAccessw hp :ef 1qBabyl ..D"e [1[2 128*5,40.:i1 40.u2 176.-40.<%2*5:f1AA> "*5:f1 | !'! \*5:f1 / (*5:f1 ( )*5:f1 ) <*5:f1  >*5:f1  ,*5:f1  @*5:f1  q1uBabyl ..Dw' Mail subsystemwS Create option variables, call setup hook. If the variable Babyl Setup Hook is non0 it is called at the end of Babyl's setup, each time Babyl is loaded. This object file was compressed on 12:47pm Monday, 12 April 1982 by LNZ on MC from the following source libraries: EMACS1; DSK: BABYL 657, 04/12/82 12:39:33 EMACS1; DSK: BABYLM 83, 03/07/82 23:54:46C Mail file editor subsystem. String argument is Babyl filename. If Babyl was temporarily exited before, this command will re-enter it instead of starting a new session. The # Babyl ^X command is the one that temporarily exits Babyl. A pre-comma numeric argument means this should exit back to DDT or EXEC. qSubDoc"n i Remembers this in Babyl Standalone Job (non0 if exiting to DDT).'C Create a new Babyl file, with sample message. Will ask you for the Babyl filename, with a standard default for a user's main Babyl file that reads the user's mail file. Will ask you about each of the various Babyl options that a Babyl file may have. qSubDoc"n i The filename may be passed as a pre-comma argument.'^R Fill Region being smart about indentation. Fills region something like ^R Fill Region, but will keep indentation and will not touch mail header or mail separator (e.g. dashes) lines. In particular, this is good for filling an indented message yanked into a *Mail* buffer by the ^R Babyl Yank command. It will respect indentation within the indented text too -- e.g. if the yanked message contains within it another yanked message, etc. Will also check for an ITS-header subject and put it on its own line, in case the subject is very long and might be too long for the screen width. M-x Undo will bring back the old text, in case filling causes more problems than it is worth.S Categorize current line. Return 0 if not mail-related, 1 if header line, 2 if separator line, -1 if send header line.C Break up a digest into individual messages. The digest is assumed to be the currently selected message. It will be replaced by the series of messages which made up the digest. A "To:List-name" field will be added to each message header, for replying and visual identification of the source digest list. The option variable Undigestify Keep Digest controls what happens to the original digest. This variable can have several values: 0: digest is discarded +n: digest is kept, before the individual messages -n: digest is kept, after them +1: digest is additionally marked Deleted -1: same If a precomma arg is given it is used instead of the value of the variable.S Find a line of numarg1 to numarg2 dashes. Blanks before end of line are ignored. We move past the found line if any. Returns 0 for failure, -1 for success.S Does the work. Bounds must be around a digest and . must be just past Topics section separator, before contents of the digest. QL must contain list name of digest. QD must hold & Find Digest Dash Separator.zC Only username. Nice for Hermes, so other people can see your subject line in a survey. Removes the "at ...." and the personal name part, e.g. leaves only: From: Ciccarelli This is an illegal header technically, but Hermes doesn't care.C Survey all kinds of message. Surveys messages after the current one generally. But if you give it a numeric argument, it will survey all messages in the Babyl file.C Survey messages labeled "unseen". Surveys all unseen messages after the current message, but if you give a numeric argument it surveys all unseen messages in the Babyl file.C Survey messages labeled "deleted". Surveys all deleted messages after the current message generally, but if you give a numeric argument all deleted messages in the Babyl file will be surveyed.C Survey messages not labeled "unseen". Surveys all such messages after the current message unless you give a numeric argument, in which case all seen messages in the Babyl file are surveyed.C Survey messages not labeled somehow. Given no (or null) string argument, surveys messages with no (user) labels. A string argument is a label; surveys messages without that label. Numeric argument means survey the next unlabeled messages.C Surveys search-selected messages. Surveys messages which contain a string (the string argument). (Actually this is a Teco search string.) Surveys all such messages after the current message, unless you give a numeric argument, in which case all such messages in the Babyl file are surveyed.C# Return to DDT temporarily.C# Delete message and move backward.C# Find and select message containing specific string. Will ALWAYS start with next message after current one. However, if no match is found, returns to current message. Argument is iteration count.C# Move to previous screenfull.C# Reformat a losing message that contains ^J's, ^H's, etc. Replace them with their visual counterparts... ^H deletes character before it, ^J inserts carriage return + whitespace ^M becomes CRLF. This is undoable. (I.e. M-X Undo brings back old message.)C# Jump to next unseen message.C# Clear screen.C# No-op, flushes argument, and goes to next line.C# Move to next message, whether deleted or not. If argument, n, goes to nth next. qSubDoc"n i 1, NUMARG means dont print any error message (just throw quietly).'C# Append current message to a TNX mail file.C# Move to previous message, whether deleted or not. If argument, n, moves to nth previous.C# Enter a recursive edit level on current message.C# Survey-prefix. Also ignores ^S^Q for VT52 lossage etc. ^S^A or ^SA is M-X Survey All Messages ^S^D or ^SD is M-X Survey Deleted Messages ^S^L or ^SL is M-X Survey Labeled Messages (reads a label) ^S^M or ^SM is M-X Survey Messages Containing String (reads a string) ^S^F of ^SF is --ditto-- ^S^R or ^SR is M-X Survey Reminders ^SS is M-X Survey Seen Messages ^S^U or ^SU is M-X Survey Unseen Messages ^S? shows this description and then reads another character. To correct for stupid terminals, any number of ^S's followed by a ^Q are ignored. This is for VT52s, H19s, maybe others.C# Call ^R Display Load Average, for TNX users.tC# Temporarily exit MM Babyl. Doesn't file out. Exits to EMACS or DDT/EXEC, depending on how M-X Babyl was called: If was 1,M-X Babyl... then will exit back to DDT/EXEC. Repeating the M-X Babyl command will resume with state unchanged.C# Execute a TECO command string.C# Print more of this message. On printing terminal: prints rest of message. On display terminal: goes to next screenful. n scrolls up n lines. 9999 Space (or any semi-infinite numeric argument) goes to the end of the message.C# Into recursive edit level on survey. No arguments means use the last survey. If no last survey, we call . M,N arguments means survey messages M through N. N argument means survey next N messages. -' is like ^S' but does not print while surveying. (Except for a "Done" which is unavoidable without serious work.) For more details, see documentation for M-X Survey Menu.C# Return the message number of current message. To reposition at top of current message, do .JC# Accumulate a line, then execute it with no display.C# Type value of numeric argument.C# Part of a Babyl numeric argument.C# Move to next message and summarize it. = NB. If the option variable Babyl A Mode Display is non-0, we will update the mode line. (Default is to update it.) Users on slow display terminals may want to disable updating, and use an occasional Z= instead, to see how many messages there are.C# Survey the current next several messages. Argument is how many messages to survey. No argument means just survey current message.S survey next NUMARG2 msgs. NUMARG1 has bits: 1, dont 1st empty survey buffer. 2, dont print as go. ORed with Survey Quietly. 0 NUMARG just makes a label.S msgBuf,surveyBuf NUMARGs. MsgBuf bound so starts with CRLF.S Updates survey line. Updates status char, length, labels, subject. NUMARG is msg #. Buffer should be survey buf. This will be a no-op if survey line not found. Caller should bind: K: & Get Labels for Survey B: Babyl buffer S: survey buffer J: # Babyl JC# S Delete this message, maybe select next. Given numeric argument, n, means delete message n. If option variable Babyl N After D is non0 (default), do an N, else stay at current message. qSubDoc"n i Pre-comma NUMARG is amount to N after this, e.g. -1 for the ^D command.'C# Expunge deleted messages. Handles empty file. If expunging leaves the file with no messages, you are asked whether to save the file and quit (i.e. do a "Q"), or save and get another Babyl file (i.e. do an "I").C# Forward current message. You can edit the message. The mail will be set up to include the current message and a subject based on the original one if any. You can then edit any of this before sending it off. If you give a numeric argument of 2 we will try to use 2 windows, with the current message in the top and the message being sent in the bottom one. The option variable Babyl F Control controls the default action of F: 0: You are put in a recursive edit level on the outgoing message, which has an empty To: field (point is there), a subject based on the original one, and the forwarded message yanked into the text field. You can thus edit any field and add comments. On terminals with insert/delete line capability, we try to optimize redisplay. 1: The To: and Subject: are read in the echo area, and you are then put in a recursive edit level on the outgoing message, with the header above the screen window, i.e. with only the text field showing. (This may be desirable for users with slow terminals without insert/delete line capability, or for users with printing terminals.) Typing Rubout to the subject prompt makes the message not have any subject; typing Return makes the default subject be used. 2: Reads the To: and Subject: in the echo area, and then mails the message, without entering a recursive edit level. 1F or 2F will force the general default action -- i.e. as if Babyl F Control were 0. (1F uses one window.) When successfully exited (not aborted) it will run any Teco program you provide in the variable Babyl F Done Hook, passing it F's arguments.C# Get any new mail received since Babyl was started. 1G means get mail from another mail file. You will be asked for its filename. Any kind of mail file can be read in: system-standard-format mail file, an RMail file, or another Babyl file. The file will NOT be deleted -- you must do this manually, if desired. The Append option (at the top of the Babyl file) determines where the new messages are put in the Babyl file and in what order: 0: prepend messages to beginning of Babyl file 1: append messages to end 2: prepend and reverse order of new messages 3: append and reverse Reversal is only done for the primary mail file, for the owner. When G is done, it will run any Teco code in the variable Babyl G Done Hook. Argument is number of new messages.C# Reform or display original header. If no argument, this forces the original header to be reformed. (You can thus manually reform selected messages even if you don't have messages normally reformed automatically -- i.e. if you set the No Reformation option.) Reparse original header. If argument, e.g. 1H, makes the original header be the visible header, i.e. it unreforms.C# File out Babyl file, read in another. After saving the current Babyl file (if necessary), asks for a Babyl file. Default filename is DSK:homedir;username BABYL on ITS, DSK:username.BABYL.0 on TNX. If file is not a Babyl file, we just read -- no deleting, no writing. If you try to read in a Babyl file that does not exist, offers to create one, asking you about the various options. If a numeric argument is given (e.g. 1I), deleting and writing are inhibited. qSubDoc"n i A pre-comma NUMARG is a filename, so wont ask.'C# Jump to message with given number. nJ goes to message n whether deleted or not. ZJ goes to last message. J goes to first non-deleted message. -J goes to last non-deleted message.C# Delete message and append to text to be Y(ank)ed. K kills current message. nK kills message n. 0K kills current message, but only appends the text of the message.C# Attach/remove a label to the current message. Given negative argument, removes the specified label.C Attach/remove a label to the current message. Given negative argument, removes the specified label.C# Go forward to next undeleted message. If numeric argument, n, goes forward n undeleted messages. qSubDoc"n i Pre-comma NUMARG of 1 means not to print any error message if no next message.'C# Write message to a Babyl file. The message will be labeled recent in the file. Any deleted label it had will be removed in that file. Other labels remain. We run Babyl O Done Hook when successfully done. qSubDoc"n i Pre-comma NUMARG means dont ask for filename -- just output to the default for O which is in Babyl O Filename.'S Label this message "filed". Designed to go on Babyl O Done Hook.C# Move to previous undeleted message.C# File out Babyl file and exit Babyl. Deleted messages are expunged from the file before exiting, and the survey buffer is emptied. Giving a numeric argument of 1 means do not expunge, just exit. qSubDoc"n i 1, NUMARG means just cleanup and file away, but dont exit.'zS Label message "answered", remove any "reply" label. This is a function that is designed to go on Babyl R Done Hook.C# Write out the Babyl file.C# Reply to message using bottom window, with message in top. Numeric argument of 1 means just reply to the FROM field. Numeric argument of 3 means automatically yank the message. It will have the reformed header. Numeric argument of 4 means automatically yank the message but with the original header. Recipient names that start with INFO-, BBOARD@, or * will not be included in a CC. (Thus you won't mistakenly reply to INFO-EMACS or *ITS or *AI etc.) Some variables may be set by the user to control header formation if they are non-0: Babyl Trim Recipient List: By making this 0 you can turn off any of this removal (including INFO-, BBOARD@, *, etc.) -- you get just the basic TOs and CCs based on the FROM, TO, CC, and Babyl CC To variable. Babyl CC To: should be a string, automatically inserted as a CC field. Babyl Fcc To: should be a string, automatically inserted as a Fcc field on Tenex or Tops-20 systems. Babyl Require Subjects: if you don't supply a subject field, you will be asked for one before mailing. Babyl Dont Reply To: should be a Teco search string, selecting CC people to remove. Each recipient mailbox name (the user@host part only, not any personal name parts) is searched -- if the search is successful that recipient is removed. This does not affect the INFO-xxx, BBOARD@, or *machine checks. If this is 0, no removal searching is done; if it is a null string, any CCs to yourself are removed, as if the string were "yourname@". Babyl R Hook: a Teco program run just before entering the recursive edit level. Babyl R Done Hook: a Teco program run when R completes successfully.S Form the message template in buffer. An internal routine of # Babyl R, and it should pass us its arguments. Original message should be already parsed, and the *Mail* buffer selected.C# Type some or all of this message. Numeric argument is optional message number.C# Undelete a message. Giving no numeric argument means undelete current message if deleted, or go back to one that is deleted and undelete that. Giving a numeric argument, n, means undelete message number n.C# Edit and send mail, with template initialization.C# Access whole file.C# Execute an extended EMACS command. This is just like the EMACS ^R Extended Command command.C# Yank and reset text saved by K.C# Return no. of messages in current file.yC# Refill the current message. Argument, or the variable Fill Column if no argument, specifies the fill width. This will not touch header or mail separator lines, and will respect indentation. E.g. any yanked messages will be filled separately, keeping their indentation. M-x Undo will bring back the old message in case filling causes problems.C# Generate a list of Babyl commands, or just describe 1 character.C# Move to next message with some label.S Quick help for Babyl commands. Invoked from Babyl with ?, this function prompts for a Babyl command character and describes what that command does. If user answers the prompt with *, all commands are described. Typing [HELP] at the prompt will get the standard EMACS helper.C# Delete the last character from accumulating argument. Period, Z, digits, comma, plus, minus, etc. are characters that make up arguments. If you rubout the entire argument, the echo area is cleared.S Bound msg . is in.S Remove deleted msgs, unlabels recent. Sets msg# variables.S sets msg# varS So return to original msg, window when caller exits.S Return .,. around (reformed) header. Point left at end of header.S Return .,. around original header +-. Point is left at end of original header.S Babyl command loop. Note variable Babyl Command Hook.uS Returns 1char-command function for ASCII arg or: 1, means type its doc-string. 2, means type 1line brief doc.S Maybe print --MORE-- and # of lines left in msg.S Format header on msg. Bounds set.S Parse header into field-name variables. & Process Recipient Field parses a recipient field. Leaves . at end of header if all ok. 0 NUMARG means this is not a numbered message (e.g. outgoing mail). 1 NUMARG means it is a numbered message (and thus we can perhaps avoid redoing the parse). Pre-comma NUMARG says to be silent about a recognized bad header, and just -1fsErrThrow leaving point at top. Else gives an error message.S Reformat From:, Sender:, Reply-to: fieldsS Create NET message header, inserted at point.S and Babylize. Leaves wide buffer. Arg is filename. May offer to create or ask for another filename. Resets fsDFile. Returns nonzero iff file was a Babyl file.C Numeric argument is desired version to go to. If you give no numeric argument, the conversion will be to the version that this Babyl assumes. Buffer should contain a Babyl file. Point is left at the top. You may convert up or down in versions. qSubDoc"n i 1, means convert virtual buffer which means copying. Returns non-0 if conversion was necessary, 0 if not.'S Internal routine. NUMARG1 is from-version, NUMARG2 is to-version.S Ensure a good Babyl/MAIL file format, autolabel.S Buffer has BABYL and MAIL already. Selects msg if there is one, flushes survey. If no NUMARG: Calculates msg#s, returns # msgs in vbuf.S From options at top of buffer.S Convert MAIL.TXTish stuff in buffer to ITS format.S Show msg and file properties. Msg #, total #, labels, filename, whether (RO).S Return 0 or list of labels for message.S Status,labels. In babyl buffer. Returns 2 values: First is status character. Second is null or the curly-braced user label list.C Survey all or n messages with some label. String argument is label. Messages with that label will be surveyed. If no numeric argument is given, all messages with the label are surveyed. If a numeric argument, n, is given, the next n messages with the label after the current message are surveyed.C Add/remove label2 from label1'ed messages. First string argument is label1, specifying which messages to consider. Second string argument is label2, the label to add or remove from the considered messages. No numeric argument means label all considered messages. Numeric argument n (positive) means label the next n considered. Numeric argument -n means unlabel the next n considered. Numeric argument 0 means unlabel all considered messages.C Delete messages with some label. String argument is label. See also UnDelete Labeled Messages. Numeric argument is number of messages (with the label) to delete, from the current message forward. No numeric argument means delete all messages with the label.C Undelete messages that have some label. Numeric argument is number of messages (with the label) to undelete, from the current messageforward. No numeric argument means undelete all the labeled messages.C Write messages with some label to a file. String argument is the label. Collects messages labeled with label and adds them to the filename read. Asks for filename. Also asks if can mark messages as deleted. Default filename is based on the label, say foo: for ITS default is FOO XMAIL, for TNX it is FOO.XMAIL.0. Numeric argument is number of labeled messages to output, from the current message forward. No numeric argument means output all messages in mail file.pS NUMARG control, msg pushing, done. No NUMARG: iterate over whole mail file, all msgs with label. NUMARG: iterate over next NUMARG msgs with label. STRARG1: Label name. STRARG2: Teco to apply to each msg. Mapper uses 1-dot qregs.S Maps over labeled messages. NUMARG1 is direction: currently only 1 (forward) works. NUMARG2 is number of messages (in set) to apply to. STRARG1 is teco commands. STRARG2 is label.yS (Un)Label current message with string argument. -1 means unlabel. 1, means do not warn "already labeled foo" etc.S Label message with string argument, a basic label. Returns 0 if not previously labeled, non0 if was.S Unlabel message with string argument, label. Returns 0 if not previously labeled, non0 if was.S See if labeled with string argument. Returns non0 iff labeled that.S Check or reset reformed bit. Returns old value (0/-1). NUMARG is new value (0/non0). If no NUMARG, doesnt change it -- just returns it.C (Un)Labels RemindNow. Negative argument means remove the reminder label from this message.C Survey messages with RemindNow label.C Move to next message with some label. No numeric argument means this command's last label is used again. (If you explicitly give a string argument, though, it will be used.) The label defaults initially to RemindNow, for reminders. With a numeric argument, will read the label to use.S Subject begins with excl or {...}.S numeric argument is string, returns qvector.S Prepare for calling & Read Command Name. Binds CRL List and CRL Prefix for reading labels. Ensures that Babyl Labels Option is a qvector, maybe converting.S Read, process, and return label with completion. String argument is prompt. Returns 0 if aborted, else full label. Label-abbrevs recognized and the full label returned. NUMARG if any is label to use, else completing-read. 1, means do not confirm a label not in list.S Ensure label is in valid list. NUMARG is label to check. 1, means confirm new labels. Returns 0 iff the user did not confirm a new label.C Edit the list of valid labels for this Babyl file. Goes into recursive editing level on the current label list, or allows you to create a new list. Only uses a few lines of the screen. A line of --------- ends this window. The list has the format: label1,label2,...,labelN You can define "bl" to be a label-abbrev for "BabylLabel" by using in place of the label the string "bl=BabylLabel". The actual list in the option field will be one line only but while editing you can use multiple lines -- this command cleans it all up when you exit via ^R Exit. If you do use several lines, be sure to include commas at the end of each line since only commas separate labels -- the end of the line is completely ignored. Aborting via Abort Recursive Edit will leave the list unchanged, even if you have done some editing. (You are editing a copy.) An example label list might be: b=bug,i=info,babyl,f=featureC Label search-selected messages. 1st string argument is a string. Messages containing that string will be labeled. 2nd string argument is the label to add. Given a numeric argument, it goes through the entire Babyl file, rather than just forward from the current message. Each message containing the given string is labeled with the given label. Note that the string is actually a Teco search string, so for instance, if you want to label messages containing "foo" OR "bar", you can provide the string "foobar".C Edit Babyl file from a survey. Babyl commands which are not control characters work as usual (plus Control-D and Rubout). Control characters may be executed as Babyl commands by quoting them with ^R Quoted Insert. When the recursive edit level is exited we will go back to Babyl buffer, selecting the current survey line's message. qSubDoc"n i Note Babyl Command Hook.'C Execute Babyl commands from survey menu. Most Babyl commands function as usual, applying to the message indicated by the cursor. Space will exit recursive edit, selecting the message which had the cursor at its survey.^R Type message text for current survey line. If in 2-window mode, will display message in opposite window. nT means type only n lines of text, no header (for 2-window mode the n is ignored -- any argument means just display text). -nT will show just header lines.S Used inside Survey Mode. Note Babyl Command Hook.S Select message in Babyl buffer from the current survey line. We leave with the Babyl buffer teco-selected, but with a cleanup handler pushed that will return to the survey buffer and select the current message's line.S Put point on appropriate survey line. Puts point on line corresponding to current message. If line not found, try to stay on whatever line we were on before. Resurveys if necessary.S Put on digits, minus, and comma to get argumentsMail-sending part of the Babyl mail subsystem.C# Continue editing the last message sent or aborted. If you give a numeric argument of 2 we will use 2 windows, with the current message in the top and the message being sent in the bottom one. Runs any Teco program in the variable Babyl C Hook after the message template has been set up.tS Edit and then send a message. To continue editing a message aborted earlier, provide a numeric argument.C# Edit and then send a message. If you give a numeric argument of 2 we will try to use 2 windows, the mail in the bottom window, the current message in the top one. To continue editing a message aborted earlier, use the C command. You may set the variable Babyl M Hook to a Teco program to run after the header is initialized.C Edit and send mail, with template initialization. The message is initialized from a template, which may specify any header or text components. The template is a variable, containing a copy of what the mail editing buffer should be initialized to. String argument is a template name. The template variable name is formed from this name -- e.g. for a template named "Foo", the variable is named Babyl Template Foo. If you are using the Babyl V command the template name is read with completion. If you give a numeric argument of 2, we will try to use 2 windows, current message in top one, message being sent in bottom one. See the M-X Set Mail Template command for aid in creating templates. Runs the Teco program in the variable Babyl M Hook if one. This program can check the variable Current Babyl Template Name, 0 for normal mailing, if it wants to further process the template.C Create or reset a mail template from buffer contents. See the M-X Mail With Template or # Babyl V command for using templates. String argument is a template name. Providing a numeric argument means that you are resetting an existing template, and completion can be used to read the template name (if you call this with ^R Instant Extended Command). The template is taken to be the entire contents of the buffer. This command is generally given while in a recursive mail edit level.S Edit some mail to send in recursive edit level. To send the mail, exit the recursive edit level with ^R Exit. To abort, use Abort Recursive Edit. If you abort, you can continue editing the message later with the C command from Babyl or by giving Send Mail an argument. The ^R Babyl Yank command will insert a copy of the current Babyl message if there is one. (E.g. the one being replied to.) Paragraph Delimiter is temporarily set so lines starting with "-" won't be considered part of a paragraph. Thus the --Text... line won't get in the way of a ^R Fill Paragraph. If the variable Babyl Require Subjects is non-0, you will be asked to supply a subject line if you forgot to include it while editing. The variable Babyl Edit Mail Hook may be set to a Teco program to run just before entering the recursive edit level. If this variable is 0, we will connect C-M-Y to ^R Babyl Yank, C-M-\ to ^R Fill Indented Mail Region, and set the Paragraph Delimiter variable.^R Yank message being replied to and grow reply window. Message is indented 4 spaces, and MARK is left before, point after, message. Numeric argument of 4 (): Message is not indented. The original header is discarded; only the reformed one is yanked. Numeric argument of 16 (): Original header is used instead.^R Calls & Read Line for subject field.^R Calls & Read Line for new To-recipient. NUMARG of 4 means ^R Babyl Add Cc-Recipient. Negative NUMARG means ^R Babyl Delete Recipient.^R Add new name to Cc field.^R Delete To- or Cc-recipient.S NUMARGs: name,fieldName.S NUMARG is recipient name.S Set up *Mail* buffer and window for editing. Selects back when caller returns. Non-0 pre-comma numeric argument means use 2-window mode. Non-0 post-comma numeric argument means reset the buffer (no buffer filenames, default filename of *Mail* or MAIL.TEMP, Text Mode.S Push-select buffer STRARG. When caller returns, the original buffer will be re-selected.S Mail message as specified by buffer contents.S Write buffer out to unsent-mail file.S Make sure From and Date fields are there, etc.S Merge, reform and parse. NUMARG is recipient buffer, pre-comma NUMARG is default host name. STRARG is field name, without any colon. Bounds should be set to just the header. All instances of the field are merged into one, with continuation lines. Some cleaning is done (of whitespace, @s), host name is added if necessary, and field is auto-filled. If variable Babyl Strip Local Host is non-zero, then the local host name is removed. Point is left at the start of the field body. Recipient buffer has the parse, a pair of lines per recipient: 1st line is mailbox name, 2nd line is full (cleaned up) recipient specification. Host names are upper-case since TWENEX mailer requires it.S Append buffer to default file, with headerS Append B,Z to NUMARG file. Returns non0 iff success.S Create some variables needed.& SetUp BABYL Library Babyl Re-Enter Babyl Create Babyl File ^R Fill Indented Mail Region & Estimate Mail-Line Category Undigestify Babyl Message & Find Digest Dash Separator & Babylize Digest Contents Shorten From Field For Stupid Local Mail Reader Survey All Messages Survey Unseen Messages Survey Deleted Messages Survey Seen Messages Survey Unlabeled Messages Survey Messages Containing String # Babyl ^C # Babyl ^Z # Babyl ^D # Babyl ^F # Babyl # Babyl # Babyl # Babyl ^L # Babyl # Babyl ^N # Babyl ^O # Babyl ^P # Babyl ^R # Babyl ^S # Babyl ^T # Babyl ^] # Babyl ^X # Babyl # Babyl # Babyl ' # Babyl . # Babyl ; # Babyl = # Babyl , , +, -, *, /, (, and ) # Argument Part # Babyl A # Babyl B & Babyl Survey Several Messages & Babyl Survey One Message & Babyl Resurvey One Message # Babyl D # Babyl E # Babyl F # Babyl G # Babyl H # Babyl I # Babyl J # Babyl K # Babyl L Label Message # Babyl N # Babyl O & Babyl O Done Hook # Babyl P # Babyl Q & Babyl R Done Hook # Babyl S # Babyl R & Setup Reply Template # Babyl T # Babyl U # Babyl V # Babyl W # Babyl X # Babyl Y # Babyl Z # Babyl \ # Babyl ? # Babyl | the Babyl Helper # Babyl & Babyl Select Message & Babyl Expunge & Calculate Message Number & Push Message & Bounds Of Header & Bounds Of Original Header & Babyl Execute Options & Babyl Macro Get & Babyl --MORE-- & Reform Header & Parse Header & Babyl Process Sender Fields & Form Header & Read Babyl File Convert Babyl File Version & Convert Babyl File Version & Babylize Buffer & Initialize Babyl Buffer & Reset Babyl Options & ITSify TNX Mail & Babyl Set Mode Line & Babyl Get Message Labels & Get Labels for Survey Survey Labeled Messages Label Labeled Messages Delete Labeled Messages UnDelete Labeled Messages Output Labeled Messages & Label Map Command & Map Over Labeled Messages & Label Babyl Message & Add Basic Label & Remove Basic Label & Check Message Label & Reformed Bit Remind Me Of This Message Survey Reminders Next Labeled Message & AutoLabel Subject Labels & Make Babyl Label Table & Use Babyl Label Table & Read Babyl Label & Add to Labels Option Edit Labels List Label Messages Containing String Survey Menu Survey Mode ^R Survey Menu T & SvMenu ^RNormal Macro & Survey-Select Message & Jump To Current Survey Line ^R SvMenu Argument & Compressed BABYLM Library # Babyl C & Mail Message # Babyl M Mail With Template Set Mail Template Edit and Mail Buffer ^R Babyl Yank ^R Babyl Add Subject: Field ^R Babyl Add To-Recipient ^R Babyl Add Cc-Recipient ^R Babyl Delete Recipient & Babyl Add Recipient & Babyl Delete Recipient & Push To Edit Mail & Push To Buffer & ITS Mail Buffer & TNX Mail Buffer & Complete TNX Header & Process Recipient Field & Append to TNX Mail File & Babyl Append & Setup BABYLM Library +8+fq(+4)[2 0[3 < %3,-q2f2u3 q3&1@; q3"l 0' > f[BBind q3-1*5,q3*5g2 q:..o(0)+q2