!* -*-TECO-*- *! !^R Find Label2:! ! Looks for the label referenced in this line ! :I*Cfs echo display M(M.M^R_Go_to_address_field) 1M(M.M^R_Mark_Word) 1a-13"E 0A-32"E @FT?No_Label -D''"# [2 .,:X2 .[3 ! * Put into Q-register! .,.+2000f:fb2:"Ew .,.-2000f:fb2:2="E @FTFurther_ w.+1990,.+7000f:fb2:"Ew .-1990,.-7000f:fb2:2="E @FT._ w.+6990,.+12000f:fb2:"Ew .-6990,.-12000f:fb2:2="E @FT._ w.+11990,.+22000f:fb2:"Ew .-11990,.-22000f:fb2:2="E @FT._ w.+21990, Z f:fb2:"Ew.-21990,B f:fb2:2="E :I*Cfs echo display @FTNot_Found''''''''''' .-q3"L @FTBackward' .-Q3"G @FTFoward' ]3]2'  1FSECHO ACTIVE !^R Find Label:! ! Looks for the label referenced in this line ! :I*Cfs echo display M(M.M^R_Go_to_address_field) 1M(M.M^R_Mark_Word) (1a-13)*(1a-9)*(1a-[)"E (0A-32)*(0a-44)"E w@FT ?No_Label 0a-32"E-D' oABORT'' [2 .,:X2 .[3 ! * Put into Q-register! 1f 1:< .,.-2000:fb2:2="N f;DONE'> 1:< @FTFurther_ .+1990,.+7000:fb2:"N f;DONE'> 1:< .-1990,.-7000:fb2:2="N f;DONE'> 1:< @FT._ .+6990,.+12000:fb2:"N f;DONE'> 1:< .-6990,.-12000:fb2:2="N f;DONE'> 1:< @FT._ .+11990,.+22000:fb2:"N f;DONE'> 1:< .-11990,.-22000:fb2:2="N f;DONE'> 1:< @FT._ .+21990,.+45000:fb2:"N f;DONE'> 1:< .-21990,.-45000:fb2:2="N f;DONE'> 1:< @FT._ .+44990, Z :fb2:"N f;DONE'> 1:< .-44990, B :fb2:2="N f;DONE'> >"E :I*Cfs echo display @FTNot_Found ' .-q3"L @FTBackwardws:=' .-Q3"G @FTFoward' ]3]2 !ABORT! 1FSECHO ACTIVE !& Create Bounds:! !& returns MIN(.+ARG,Z) or MAX(.-ARG,B) ! F[1 q1"L .+q1,Bfu1w'"# .+q1,Zf*0:u1' q1+(]1w0) !Jsys:! ! runs JSYS on the previous or current word ! f[1 @FT_ 1M(M.M^R_Backward_word) 1M(M.M^R_Mark_word) q1-4"n 0F[ LINES 0F[TOP_LINE F+ [2 .,:X2 -1FO..Q JSYS Fork [3 q3"L @FZSYS:JSYS.EXE_2 M.V JSYS Fork ' "# 0,q3@FZJSYS_2 ' ]3]2ww :FI-32"E FIW' F+ F]TOP_Line F]Lines '"# [2 .,:X2 -1FO..Q JSYS Fork [3 q3"L @FZSYS:JSYS.EXE_2_-JSYS-.TMP.-1;T M.V JSYS Fork ' "# 0,q3@FZJSYS_2_-JSYS-.TMP.-1;T ' ]3]2ww M(M.M Select_Buffer)-JSYS-.TMP 1M(M.M ^R_Visit_File)-JSYS-.TMP'' ]1 !DDT:! ! runs SDDT in a subfork ! @ft_ -1FO..QSDDT Fork [3 q3"L FZSYS:SDDT.EXEM.V SDDT fork ' "# @ft[DDT_Continues]  q3FZ' ]3w :FI-32"E FIW' F+ !Run Compiler:! ! runs SYS:.EXE! qmode[2 @ft[2] -1FO..Q2 Fork [3 q3"L FZSYS:2.EXEM.V 2 fork ' "# 0,q3FZ' ]3]2 F+ !Finger:! ! Find a user ! :I*Cfs echo display 1,F User:_[1 :I*Cfs echo display -1FO..Q Find_ Fork [3 q3"L @FZSYS:FINGER.EXE_1/terse M.V Find_ Fork ' "# 0,q3@FZF_1/terse' 1FS Echo Active ]3]1 !Print file:! ! print the file in the current buffer! qBuffer_Filename[1 1,0M(M.M ^R_Save_File) 0fzprint 1 w]1 !Extract Keywords:! !C extracts the terminal symbols from some BNF Terminal symbols begin with an upper case letter, and end end with a seperator character (^B in search string). The rest of the buffer is destroyed. ! . 0f[ Bothcase !* exact searches ! <:sABCDEFGHIJKLMNOPQRSTUVWXYZ; !* Find a keyword ! -c . !* Save beginning address ! sw !* End of the keyword ! :,.@x1 !* Add it to the q register ! > hk g1 !* Move in the keywords ! bj<:s; -di > !Position Buffer:! ! takes a percentage of file to position the buffer at ! F*z/100j !Code table:! ! generate code conversion tables! [1 < fiu1 q1-27"E0;' i movei C,"q1ii"  @V W q1fsecho out> !^R Previous Narrow Page:! ! back up a page in narrow mode! -1m(m.m^R_narrow_bounds_to_page) !Expand Diagram:! ! expand a digram to make it bigger! [1[2 M(M.M ^R_Narrow_Bounds_to_Region) bjz M(M.M Untabify) !* first we un-ident the whole thing as much as possible ! B+1j.u199u2<.-z; :s ;((0a-13)*(0a-10))"N(.-q1)-q2"L .-q1u2 q2='' l .u1> bjz -q2M(M.M ^R_Indent_Rigidly) < .-z; 1a"A 32u2 '"# 1a"D 32u2'"# 1au2'' !* letters and digits are expanded with! !* spaces, other chars with themselves! c q2-13"N q2-10"E13i' q2i' !* insert the new character (except CR)! > !* bjz M(M.M Tabify) Doesnt Work ! M(M.M ^R_Set_Bounds_Full) ]1]2 !BillWs Write File:! ! write a file with defaults! 31F[:ET MODE !* save old GTJFN bits, and use defaults! @M(M.M Write_File) !* call ordinary write file routine! F]:ET MODE !* restore old BITS! !Monitor Mode:! ! set up for editing DEC standard Macro ! M(M.M Make_Local_q-Reg)_ !* Space is localy defined ! M(M.M Make_Local_q-Reg)  !* Tab is localy defined ! M(M.M Make_Local_q-Reg), !* Comma is localy defined ! M(M.M Make_Local_q-Reg)/ !* Slash is localy defined ! M(M.M Make_Local_q-Reg)..; !* M-; is localy defined ! M.M^R_MonitorMode_Space U_ !* runs fancy space definition ! M.M^R_MonitorMode_Space U  !* runs fancy space definition ! M.M^R_MonitorMode_Space U, !* runs fancy space definition ! M.M^R_MonitorMode_Space U/ !* runs fancy space definition ! M.M^R_Monitor_Comment U..; !* M-; locally defined ! :i*MonitorM.LSubMode !* Set SubMode name for buffer ! !^R MonitorMode Space:! ! maybe uppercase macro code! .,.-80@:F;/\ !* See if we are in a comment or string ! :a-31*(0a-10)"L !* and not at the beginning of a line ! -fwf(@fc) w-fwF' !* uppercase the previous word ! FS^R LAST1-13"nq1I.-1,.@V]1' !* Insert the char invoked with !  !^R Monitor Comment:! ! indent for comment after doing capitaliaztion ! 13fs^R LAST !* prevent from inserting command! M(M.M^R_MonitorMode_Space) !* do capitalization! M(M.M^R_Indent_for_Comment) !* call commend macro and return ! !Cray Mode:! ! Set up for editing Cray assembly language ! M.M^R_Tab_to_Tab_StopM(M.M Make_Local_q-Reg)I !* Tab is localy defined ! 0 M.LIndent_Tabs_Mode !* Indent using Spaces ! 35 M.LComment_Column :I*_________:_________:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:_______:M.LTab_Stop_Definitions !STANSW:! ! Add a STANSW conditional block to code. ! !* Puts IFE STANSW,< and >;IFE STANSW at point and mark. ! !* Adds IFN STANSW,< >;IFN STANSW with same code duplicated. ! !* with an ARG of 4, only adds empty IFN STANSW pair. ! !* with and arg of 16, puts IFE STANSWs, but no IFN STANSW. ! f-4"EiIFN_STANSW,<;;;_ >;IFN_STANSW w-l-2c'"# :[1[2.[3 Q1-Q3"GM(M.M^R_Exchange_Point_And_Mark) q3[1 ]3 ' q1,q3x2 i>;IFE_STANSW wF-16"NiIFN_STANSW,<;;;_ 2>;IFN_STANSW ' q1jiIFE_STANSW,< wF-16"Ns;;;_' ]3]2]1' !& Digestify:! !& Take a TENEX MAIL FILE and make it into a digest ! !* A Digest has the following format : ! !* Mailer info ! !* Digest name Date Volume n : Issue m ! !* This weeks editor: ! !* Today's Topics: ! !* (subject lines from each message) ! !* (line of 70 dashes) ! !* Messages, each containing Date:, From:, Subject:, and To: ! !* Each message ends with a line of 30 dashes ! !* End of digest ! !* ************* (24?) ! !* 7 dashes ! !* EOF ! BJ [s[1 0[2 1,F List_Name:_ 1,F Editor:_ 1,F Destination:_ 1,F Volume:_ 1,F Issue:_ !* Issue ! !* M(M.M Find_File) ! :iS !* Initialize Subject collection Qregister ! < !* For each message ! .U1 S  w 1a-13"N -L' !* Find the blank line at end of headers ! Q1,.FS BOUNDARIESw BJ !* Narrow bound to just the header ! M(M.MKeep_Lines)Date:Subject:To:From: !* Only keep interesting ! BJ :Ssubject: "L 1@XS %2 ' !* collect the subject of the message ! 0,FS ZFS BOUNDARIESw !* restore boundaries ! :S;0000000000"E ZJ' 0L !* Find the next TENEX message header ! !DTL! -l1:fb"Ew1K ODTL' !* delete trailing blank lines ! L I ------------------------------   !* insert message seperator ! .-z; > !* All messages done. ! !* Do global stuff - trailer, header ! IEnd_of_N_Digest ************************** -------  BJw I =DELIVERY-OPTIONS:MAIL  _Score.Stanford.EDU.#Internet N-Request  Score.Stanford.EDU D  Date:_ 202021000000.,-1FS FD CONVW-4CWDI_3C !* Date magic ! I Subject:_N_Digest_VV_#I From:_N_Digest_<N@Score.Stanford.EDU> Errors-to:__N-request@Score.Stanford.EDU Maint-Path:_N-request@Score.Stanford.EDU To:_N_Distribution_List:_; Reply-to:_N@Score.Stanford.edu  N_Digest___336400000000.,-1FS FD CONV !* More date magic ! I___Volume_V_:_Issue_I  This_weeks_Editor:_E  Today's_Topics:  .U1 gS Q1J Q2M(M.M^R_Center_Line)w I ----------------------------------------------------------------------   BJ !Digestify:! !C Take a TENEX MAIL FILE and make it into a digest ! @M(M.M&_Digestify)