/!COMPILED! !do not modify this file unless you know what you are doing and do not forget to re-compile it! [7[6[5[4[3[2[1 [..o 1:"lfsbcreatew' u1 fq1++4u1 zj .u2 iname: 32*28590,28580  45*28936,28921 - 48*29062,29049 0 49*29008,28977 1 50*29008,28977 2 51*29008,28977 3 52*29008,28977 4 53*29008,28977 5 54*29008,28977 6 55*29008,28977 7 56*29008,28977 8 57*29062,29049 9 58*28936,28921 : 59*28865,28855 ; 92*54350,54314 \ 127*28249,28239  8*18827,18817 H 9*18920,18908 I 10*18977,18967 J 13*19722,19704 M 27*26727,26717 [ 192*6314,6121 .@ 193*6384,6373 .A 194*8695,8658 .B 195*15166,15145 .C 196*15484,15473 .D 197*15834,15817 .E 198*18652,18631 .F 199*18727,18716 .G 203*19305,19292 .K 204*19571,19560 .L 206*20189,20176 .N 207*20414,20401 .O 208*20657,20644 .P 209*20911,20900 .Q 210*21016,21005 .R 211*21086,21075 .S 212*24207,24188 .T 213*24357,24346 .U 214*24655,24644 .V 215*25368,25357 .W 216*25870,25859 .X 217*25916,25897 .Y 218*26516,26497 .Z 220*26984,26973 .\ 221*27095,27084 .] 222*27146,27127 .^ 223*28101,28088 ._ 299*29411,29361 ..+ 301*29903,29857 ..- 302*59010,58996 ... 316*29287,29103 ..< 318*29337,29311 ..> 320*30370,30346 ..@ 322*13568,13554 ..B 323*59290,59254 ..C 351*30622,30576 .._ 383*28394,28382 .. 264*18891,18855 ..H 266*19126,19073 ..J 269*19973,19945 ..M 283*26775,26763 ..[ 449*31803,31790 ...A 450*11082,11043 ...B 451*15444,15431 ...C 452*32326,32313 ...D 453*15803,15790 ...E 454*18691,18678 ...F 455*18789,18776 ...G 459*31056,31041 ...K 459*32395,32382 ...K 460*19674,19661 ...L 462*32119,32106 ...N 463*20497,20478 ...O 464*32188,32175 ...P 465*20949,20936 ...Q 466*31910,31897 ...R 467*23129,22663 ...S 468*24283,24270 ...T 469*32257,32244 ...U 471*31231,31216 ...W 472*30912,30897 ...X 474*32464,32451 ...Z 477*59225,59191 ...] 478*27248,27235 ...^ 479*28438,28425 ..._ 385*54052,53946 ...A 386*33013,32974 ...B 387*33236,33188 ...C 388*34114,34041 ...D 389*35678,35635 ...E 390*35794,35754 ...F 391*37273,37230 ...G 392*37995,37932 ...H 393*39716,39655 ...I 394*39964,39847 ...J 395*40692,40619 ...K 396*41018,40964 ...L 397*41346,41331 ...M 399*41742,41693 ...O 400*41871,41857 ...P 402*42072,42005 ...R 403*43821,43806 ...S 405*43930,43915 ...U 407*44335,44223 ...W 408*20497,20478 ...X 409*44524,44472 ...Y 410*44763,44748 ...Z 411*26804,26791 ...[ 414*28075,28025 ...^ 414*59796,59751 ...^ 415*28416,28403 ..._ -2*795,782 ..G -2*811,800 ..J -2*45001,44990 ..W -2*44920,44908 .9 -2*32747,32520 .A -2*886,816 .C -2*1144,1134 .D -2*1981,1885 .G -2*2061,2034 .I -2*2678,2640 .J -2*3172,3162 .K -2*3365,3301 .N -2*3538,3478 .O -2*3923,3716 .T -2*3967,3928 .U -2*4389,4331 .V -2*5292,4559 .X -2*5644,5572 .Y -2*5940,5664 .Z -3*30539,30519 @default -3*56451,56436 BREST -3*55795,55770 BSAVE -3*11970,11903 BUFDUMP -3*12700,12639 BUFGET -3*12322,12255 BUFLOAD -3*51435,51416 BUFNAME -3*52503,52484 COMPILE -3*58928,58894 Case -3*51959,51930 Check Safety File -3*59290,59254 Count -3*43723,43702 File Left -3*33966,33943 File Search -3*33807,33783 File Version -3*26516,26497 Flush -3*58648,58620 Format Directory -3*8025,7650 Get Buffer name -3*58682,58655 Initial Default -3*8421,8393 Kill Buffer name -3*13338,13101 Leave Split Screen -3*34010,33983 Make Search Fnm -3*59051,59035 PAGE -3*58887,58864 Process JCL -3*18608,18587 Pull File -3*59995,59925 REALTIMER -3*58467,58443 RESTORE BUFFER -3*41950,41928 Reap Count -3*35627,35605 Right File -3*58853,58826 Rmode Directory -3*51730,51710 SAFETY > -3*51636,51614 SAFETY FN1 -3*51802,51777 SAFETY SINGLE -3*51466,51444 SAFETY STD -3*58276,58255 SAVE BUFFER -3*56345,56332 STR -3*33723,33672 Segment Directory -3*27369,27344 Set Screen Size -3*60612,60592 TIMED SAVE -3*58717,58694 Tailor File -3*58115,58100 UNSTR -3*40692,40619 center -3*55442,55407 da -3*53666,53639 delimit here to -3*55442,55407 dump abbreviations -3*55013,54978 la -3*55013,54978 load abbreviations -3*55148,55113 load file abbreviations -3*52824,52721 load macro file -3*52824,52721 load macro library -3*35716,35694 namestring -3*43798,43775 search action -3*43764,43730 search pattern -3*15718,15686 show directory -3*14854,14779 split refresh -3*53062,53041 srch mode -3*52940,52920 teco 514 -3*55636,55601 va -3*55636,55601 view abbreviations -3*53432,53403 view qvector -3*53432,53403 vq -3*59706,59676 words -3*15834,15817 ~~ -3*54350,54314 ~lookup abbreviation~ -3*54052,53946 ~make abbreviation~ -3*46650,46566 ~printing tty ~ -3*46965,46856 ~printing tty ~ -3*47278,47203 ~printing tty ~ -3*45799,45666 ~printing tty "normal"~ -3*45994,45885 ~printing tty .G~ -3*46116,46029 ~printing tty .J~ -3*49736,48399 ~printing tty .Z~ -3*45650,45546 ~printing tty .e default~ -3*47682,47650 ~printing tty options~ -3*45229,45007 ~printing tty setup~ -3*47634,47506 ~printing tty toggle~ -3*53094,53072 ~srch .D~ -3*53121,53101 ~srch .U~ -3*53153,53128 ~srch either~ -3*53332,53310 ~srch fwd~ -1*129,0 xecute 129 -1*652,487 xecute 652 -1*3286,3222 xecute 3286 -1*3706,3645 xecute 3706 -1*8575,8564 xecute 8575 -1*12870,12814 xecute 12870 -1*21063,21043 xecute 21063 -1*31668,31482 xecute 31668 -1*39830,39783 xecute 39830 -1*41299,41240 xecute 41299 -1*41845,41794 xecute 41845 -1*51330,51139 xecute 51330 -1*52534,52523 xecute 52534 -1*53915,53719 xecute 53915 -1*59874,59810 xecute 59874 :^i6|[..o :fo..o2u5 q5"g f~:..o(q5)2"n -q5u5'' q5"l-5*q5j .(0fsword*5,0i)j q2,.fswordw'"#q5*5j' q3,.+5fswordw q7,.+10fsword ]..o| q2j :l .(eg -4:k)j 3k:l 9i q1\ z+6u4 6,q4\ "n zj' :w wfsbkillw]1]4]5q5j'"# q2(c\+q1u7c:x2)2"eq3u2'"#q..qm6'''>  !COMPILED!~ Copyright (c) 1978, by Robert V. Baron and Massachusetts Institute of Technology. All rights reserved. <=>12:i*[2 :@I*| f[bbind f[dfn2 er.teco.;modeld > @Y fsiffn2fsdfn2w ewwjl1;hpwefqodeld  er.teco.;modedf > @Y fsiffn2fsdfn2w mdecompile j j ewwjl1;hpwefqodedf  er.teco.;mymode > @Y fsiffn2fsdfn2w mdecompile j j ewwjl1;hpwefqymode   |mintern@ rmode system   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; STATE REGISTERS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <=>@:I*| 1F[NOQUITW :I*[..A M.D :@I*!0f[^rleavew!f[^renterw| FS^RENTER @:I*| B,BX..J :I..A/\| FS^RLEAVE ..G<= ..J<= ^X is ior'ed into the mode words, and then ^Y is xor'ed in .C<=w FNFR[..J [.R [.S [.Q Q.M#[.M QMETA .M#[META .M QMETA .7[META .7 Q.7[.7 QMETA .8[META .8 Q.8[.8 QMETA .9[META .9 Q.9[.9 QMETA ..D[META ..D Q..D[..D :I.S F~.SWINDOW"EFS^RMD'"#0'F[^RMD 1M.D.S 1:<>,2M.ZW  .D<= [..O FSBCREATE [.S[..S G..JJ 0U.R :S<"L <%.RAF<:;> F*> '"# 1U.R' "N%.RW :I.S**'"#:S[*+1"L.-1,(SW.)'"#B,B'X.S'HK Q.M&10000000."EI$ ' 1 Q.M&1."E I NOARG' Q.M&1000."N I PREFIX' Q.M&4000."N I ^CKILL' Q.M&100000."N I AI' Q.M&10000."NI ^I' Q.M&20000."NI END' Q.M&2000."NI BEGIN' Q.M&40000."NI ^G' FS^RMD"NI SAFE' J 4,32I Q.R,74.I I=< ZJ I>= Q.R,76.I I [ GBUFNAME I]  G.S 4,32I FSBOTHCASE"N HFC' ]..S].S HX..J FSBKILL wfsrgetty"efr' !PAGE! .E IS STATE FOR PRINTING CONSOLES .F IS A BUFFER INITIALIZED DURING LOADING .G<=2<-Z; FSECHODISPWXFSECHODISPW 0A-40.;> -DW CASE CONVERSION .I<=FSCASE"E'"N' [.1 [.2 !PARSE! @:FIU.1 FIU.0 Q.0-^"E Q.M#2000000000.U.M OPARSE' +(FSCASE)"L Q.M&2000000000."G OUPPER' Q.0-/"E @:FIU.1 FIU.0 OUPPER' OLOWER' +(FSCASE)"G Q.M&2000000000."G OLOWER' Q.0-\"E @:FIU.1 FIU.0 OLOWER' OUPPER' !LOWER! Q.0-101."L OOUTPUT' Q.0-140."G OOUTPUT' Q.0+40.U.0 OOUTPUT' !UPPER! Q.0-141."L OOUTPUT' Q.0-176."G OOUTPUT' Q.0-40.U.0 OOUTPUT' !OUTPUT! Q.1&700.Q.0FSREREADW !DONE!W  .J MACRO FOR AUTO ARG HACK .J<= .U.B Q.M&1"E Q..0FS^RINSERT W.' :FIF(U.R)-40."L Q.R-33."E FIW' Q.RF +1"G Q..0FS^RINSERT'"# Q..0:I.T' W.' Q.RF:-0123456789"L Q..0FS^RINSERT W.' [..O FSBCREATEW 1,1M.VNumber:  Q..0I Q..0FSECHOOUT :< Q.R-127"E M.G FIW'"#Q.RI FIFSECHOOUT' :FIU.R Q.R-40."L Q.R-33."E FIW' Q.RF +1:"G HFX.T FSBKILL W.' 0;' Q.RF:-0123456789"L 0;'> HFX.S FSBKILLW FQ.S"G 0[0 FQ.S ]0 B,BX.S' W. .K<=Q.M&4000."N ,F(X.R)L 0U.Q'"#,X.R 3U.Q' .L CONTAINS THE LOADER !page! .M THE DEFAULT MODE .M<=>44003.U.M .N GET THE 'TH LINE FROM EG. IF ZERO THEN FILENAME1 .N<=p[..O FSBCREATEW EG J -1L "E 3L' 0,.K :L .,ZK "E 0L S: 0K S R :K' HFX.S FSBKILLW SHOW THE DEFAULT FILE AND ASK FOR STRING INTO .S .O<=M.V 0U.P Q.M&20000000."N0M.V [Buffer Window Set On]' fsdfileu.s -1M.X (Defaults: .S)  .P HAS A FLAG >0 IMPLIES SOMETHING TYPED TO USER .P<=> 0U.P  .Q HAS A FLAG INDICATING BUFFER REDISPLAY CONVENTIONS USED BY M.Z AND SET BY ANYONE .R CONTAINS Q REGISTER JUST FETCHED .S CONTAINS SOME STRING ARG .T WILL CONTAIN NUMERIC ARG AS A STRING .T<= .U GET SUFFIX Q REG INTO .R .U<=[..O FSBCREATEW 1M.VQregister:  FII 0A-27"N 0AF:"EHK'"# :<0A-177."E -D M.G'"# 0AFSECHOOUT 0AF.:;' FII>"L B,BX.R'"# 0A-40."L 0A(-D)+100.I''''"# 1M.X(String)  FQ.S"LHK'"# G.S 27I "N :fo..q.su.r q.r"g f~:..q(q.r).s"n -q.ru.r'' q.r"l q..q[..o -5*q.rj .(0fsword*5,0i)j q.s,.fswordw ]..o' '''HFX.R FSBKILLW PRINT STRING ARG IN ECHO AREA. =1 => CR FIRST .V<=FSRGETTY"EQ.E&3"E FT\ Q.E&(-4)2U.E'' "G :fcFCTLX"L %.P-1"E 15.FSECHOOUT '"# 40.FSECHOOUT''"# FSECHODISPWFSECHODISPW 0U.P'' "E @:FT'"#@FT'  !PAGE! CALLED BY ROUTINES TO ACCUMULATE PREFIX NUMERIC ARG FROM USER STORED INTO .T AND READ BY .Y .W [.N [.0 [.1 [.2 .U.1 :@I.N@ 0U.2 -9-1"L -0+1"G %.2W'' Q.2 @ "E 1M.VNumeric Arg:  "N FSECHOOUT'' :<1M.I :FI:fcU.0 1) 0;' Q.0F-:+BHZ.,^+1"G FII 0AFSECHOOUT 0;' Q.0-F"E FII 0AFSECHOOUT FII 0AFSECHOOUT0;' Q.0FLDUW+1"G FI FII FFSECHOOUT 0AFSECHOOUT 0;' Q.0M.N"G FII 0AFSECHOOUT 0;' Q.0-177."E FIU.0 M.G 0;' -1U.0> Q.0"L 0;'>"L FG HK'  ACCUMULATE A STRING ARG FROM USER STORE IN .S TAKES A STRING ARG WHICH IT PRINTS OUT VIA M.V .X<=M.V Q.M([.M)U.M [..O FSBCREATEW :"L 0U.S 3U.Q'"# "LH@FC' HFX.S' FSBKILLW].M GET THE NUMERIC ARG (USED IN FRONT OF A NORMAL TECO COMMAND) .Y<=FQ.T"EF'"#.T'  EXIT FROM A ^R MACRO ^X<0 => DING =0 =>RESET ARG AND DELETIONS (USE CHAR DELETE?) =1 =>RESET ARG AND INSERTION =-1 =>RESET ARG AND INSERTION IN FORWARD DIRECTION =2 =>DONT RESET ARG AND ONLY CURSOR MOVEMENT =3 =>RESET ARG AND ONLY CURSOR MOVEMENT .Z<= -2"N B,BX.T 0U.P .FSPUSHPT' "N FG @FT  FSECHOOUTW.' -1"GW.' "N Q.B,.F' FSRGETTY"N q.b-.-20"l Q.B-.F(F"GC'"#W0,0:FM'W)FS^RRUBOUTW.'' Q.B,.FK W.,.  !PAGE! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; START OF ^R MACROS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; READ OUT MARK .@<=1:<.U.B FQ.T"E :I.R...T'"# M.U' :I.TQ.R,.F>,2M.Z .A<=q W1:<.U.B [.0[.1 1M.VMode: 1M.I FI:fcU.1 Q.1-40.F"L+140.U.1' 1M.D ].1 ].0 Q.M&400."N 1000.'"#-1'FS^RSUPPRESW >,3M.Z  !PAGE! Buffers are handled as special symbols with 'pname' of '$Buffer xxx$' where 'xxx' is what you typed. Their values are what you typed. Get Buffer name's argument is like .U's, with the addition that the 2 bit means the symbol is already in .S and doesn't need to be read; this is for ^EB and interning 'MAIN' as an initial symbol. *Get Buffer name*<=o [..O FSBCREATEW [0[1 &2"E [2 &1"e qself flag:"g q:curbuf(10)U2 ' "# qcurbufu2 ' q:2(9)u2 -1M.X (2):  ' "# -1m.x:  ' ]2 ' FQ.S"G q.su1 IBuffer  G.S hfx.s 27I g.s 27i &1"N :fo..q.su0 q0"g f~:..q(q0).s"n -q0u0'' q0"l q..q[..o -5*q0j .(0fsword*5,0i)j q.s,.fswordw ]..o HX0 Q1U0 '' HFX0 HK G0 HFX.S ' ]1]0 FSBKILLW *Kill Buffer name*<= [0[1 q:curbuf(9)u1 @:i1|Buffer 1| :fo..q1u0 q0"g f~:..q(q0)1"n -q0u0'' q0"g q..q[..o 5*q0j .(0fsword*5d)j ]..o ' 0fstrace  <=> 0MINTERNBUFRET 0MINTERNBUFTEMP :I.sMAIN 3MGet Buffer name Buffer selection stuff .B<= !BEGIN! Q..O[1 QBUFRET[2 [3 1:< .U.B 0U.P Q2"N ORTEST' Q.M&20000000."N BU:CURBUF(11) ZU:CURBUF(12)' 3U.Q F=.T-"E QCURBUF-(Q:CURBUF(10))"E :I*KLB Attempt to kill last bufferFSERR' 1M.VSuicide to Buffer MGet Buffer name FQ.S"L OABORT' FQ.S"E Q:CURBUF(10)UBUFTEMP'"# MBUFGETUBUFTEMP' QBUFTEMP-QCURBUF"E :I*STS Attempt to suicide to selfFSERR' :IBUFRETBUFKILL ORTEST !BUFKILL! QBUFTEMPU2 Q2U3 0UBUFTEMP Q:CURBUF(10)U:3(10) mKill Buffer name Q2UCURBUF MBUFLOAD Q1FSBKILL Q:CURBUF(11)+1"N OWINDOW' H^V 0;' FQ.T"E 1M.VSelect Buffer MGet Buffer name FQ.S"L OABORT' FQ.S"E Qself flag"G QCURBUF'"#Q:CURBUF(10)''"# MBUFGET' UBUFTEMP :IBUFRETBUFSWAP ORTEST !BUFSWAP! MBUFDUMP QBUFTEMPUCURBUF 0UBUFTEMP MBUFLOAD Q:CURBUF(11)+1"N OWINDOW' H^V 0;' F=.T:"E 1M.VCreate Buffer 1MGet Buffer name FQ.S"L OABORT' FQ.S"E :I*NBN Null Buffer name givenFSERR' 1:"E :I*BAE Buffer already existsFSERR' Q.SUBUFTEMP :IBUFRETBUFNEW ORTEST !BUFNEW! QBUFTEMPU.S MBUFDUMP (5*16)FSQVECTORU2 FSBCREATE Q.SU:2(9) Q.SUBUFNAME QSAFETY DEFAULT"E MSAFETY STD'"# QSAFETY DEFAULTUSAFETY FILE' FS^RMDLYFS^RMCNT -1U:2(11) QCURBUFU3 QCURBUFU:2(10) Q2U:3(10) Q2UCURBUF M.D H^V' 0;' !ABORT! M.VAbort FG QSelf flag"G MLeave split screen -1USelf Flag ' 0; !BUFREAD! MBUFDUMP QBUFTEMPU.S ET.S FSD FN1^F6U.S 3MGet Buffer name Q.SUBUFNAME 1:"N (5*16)FSQVECTORU2 FSBCREATE Q.SU:2(9) -1U:2(11) QSAFETY DEFAULT"E MSAFETY STD'"# QSAFETY DEFAULTUSAFETY FILE' FS^RMDLYFS^RMCNT QCURBUFU3 QCURBUFU:2(10) Q2U:3(10) Q2UCURBUF' M.D ^Y 0FSMODIFIED 40: WFSLISTEN"EHV' H^V 0; !WINDOW! Q..OU1 Q:CURBUF(11),Q:CURBUF(12)FSBOUND( -1U:CURBUF(11) :I.T ]3 ]2 ]1 20000000.M.CWINDOW)FSBOUND H^V 2U.Q 0; !RTEST! Q.M&26000000."N 302.FSREREADW :I.T ]3 ]2 ]1 0FS^REXIT' -1Uself flagw QBUFRETU2 0UBUFRET O2 >F("L Q1U..O'),Q.QM.Z  Other buffer functions ...B<= .U.B 3U.Q Q..O[1 1:< FQ.T"E MBUFDUMP QCURBUF[2 FTBuffers: (!=modified,+=modified but saved)  [3 [4 [5 [6 [7 F[DFILE Q1U..O 0;' '' !Gross, but necessary! F=.T:"E 1M.VRename Buffer to 1MGet Buffer name FQ.S"L M.VAbort FG 0;' FQ.S"E :I*NBN Null Buffer name givenFSERR' 1:"E :I*BAE Buffer already existsFSERR' Q.SU:CURBUF(9) Q.SUBUFNAME M.D 0;' F=.T-"E 1M.VGet from Buffer 1MGet Buffer name FQ.S"L OABORT' FQ.S"E Q:CURBUF(10)[2'"# MBUFGET[2' G:2(0) 1U.Q 0;' >F("L Q1U..O'),Q.QM.Z  Routine to dump parameters into a buffer block *BUFDUMP*<= Q..OU:CURBUF(0) FSDFILEU:CURBUF(1) QSAFETY FILEU:CURBUF(2) Q..FU:CURBUF(3) FS^RMDLYU:CURBUF(4) FS^RMCNTU:CURBUF(5) Q.MU:CURBUF(6) Q..SU:CURBUF(7) Q...TU:CURBUF(8) FSADLINEU:CURBUF(13) FSFILEPADU:CURBUF(14) Q.HU:CURBUF(15)  Routine to load parameters from a buffer block *BUFLOAD*<= Q:CURBUF(0)U..O Q:CURBUF(1)FSDFILE Q:CURBUF(2)USAFETY FILE Q:CURBUF(3)U..F Q:CURBUF(4)FS^RMDLY Q:CURBUF(5)FS^RMCNT Q:CURBUF(6)U.M Q:CURBUF(7)U..S Q:CURBUF(8)U...T Q:CURBUF(9)UBUFNAME Q:CURBUF(13)FSADLINE Q:CURBUF(14)FSFILEPAD Q:CURBUF(15)U.H M.D  Routine to get buffer whose name is in .S *BUFGET*<=q QCURBUF[1 Q1[2 Q1  !PAGE! Split Screen Code Global variables <=> MINTERNsplit screen -1Usplit screen MINTERNself flag -1Uself flag MINTERNother lines MINTERNother window MINTERNother point MINTERNother name MINTERNmiddle screen MINTERNother topline  Swap/Enter/Exit Split-Screen Windows mode ^Q B (or :^Q B) Swaps or Enters split screen if Entering then selects or creates buffer for lower window -^Q B Exits split screen mode with current buffer. *Leave Split Screen*<= 1:< Qsplit screen"L 0;' FStopline-Qother topline"G Qother toplineFStopline' (fsheight-(fsecholines)-1)fslines 0fsrefreshw Qsplit screen(-1USplit Screen)MSet Screen Size > ..B<= 1:<.U.B 1U.Q F=.T-"E MLeave Split Screen 3u.q 0; ' Qsplit screen"L FSLINESUsplit screen QBUFNAMEUother name .Uother point FSwindowUother window FSHEIGHT-(FSECHOLINES)-(FStopline)-1[0 (Q0-1)/2[1 FSlines-Q1"L FSlinesUother lines'"# Q1Uother lines Q1FSlines :F Q0-Q1-1FSlines' ]1]0 FStopline+Qother linesUmiddle screen FStoplineUother topline Qmiddle screenFStopline :FT FSwidth/11 0U..H Qmiddle screen+1FStoplineW F+ Qsplit refreshFSrefresh q.m&20000000."n bu:curbuf(11) zu:curbuf(12)' 1Uself flag 302.FSrereadw 2U.Q 0;' FSwindow(Qother windowFSwindoww)Uother window FSlines(Qother linesFSlinesw)Uother lines FStopline(Qother toplineFStoplinew)Uother topline Qbufret"N .Uother point QBUFNAMEUother name 302.FSrereadw 0;' Qother nameU.Sw QBUFNAMEUother name F=.T:"E 302.FSRereadw 2U.Q 0;' F~BUFNAME.S"E .(Qother point:Jw)Uother pointw ^V 0;' .Uother point MbufgetUBUFTEMP q.m&20000000."n bu:curbuf(11) zu:curbuf(12)' :IbufretBUFSWAP 302.FSrereadw >,Q.QM.Z  Code to refresh screen when in split screen mode *split refresh*<= 0F[refresh .[1 FNq1j Qother point:J Qother windowF[window Qother linesF[lines Qother toplineF[topline 1: Qmiddle screenFStoplines :FT FSwidth/11 0U..H  !PAGE! .C<=1:<.U.B 1M.VCopy to 1M.U .TF-3"E 1M.YF(U.B-."E.U.B'"#Q.BJ')M.K 0;' Q.M&2."N 1M.YFM.K 0;' Q.M&4."N 1M.YFLM.K 0;' Q.M&40."N 1M.Y^FLM.K 0;' Q.M&10."N 1M.YFWM.K 0;' q.m&100."n m~srch either~m.k 0;' Q.M&20."N M.9M.K 0;' >,Q.QM.Z ...C<= [.M Q.M#4000.U.M M.C  .D<=1:<.U.B Q.M&12."N [.1 FSHPOSU.1 1M.YL <0,1AF:;L> ].10;' Q.M&44."N 1M.YFDL 0;' q.m&100."n m~srch .D~ w0;' Q.M&20."N M.8L 0;' >,3M.Z !PAGE! *show directory*<=0F[toplinew 0F[linesw HT ^FI(F+w)FSrereadw F]linesw F]toplinew ...E<= 1,:m.E .E,+~~*<= 1:<.u.b 3u.q +1"gf[dfilew' Cm.vI/O  1m.i fi:fcu.1 q.1-40.f"l+140.u.1' 1,2m.zw j2x.r q.s[2 mSegment Directory"n jk ' ]2 g.r mshow directory f]bbindw f]casew h^v 0; !o! m.oOverlay fq.s"l orq' et.s [..o fsbcreatew 1:,2m.zw fsdfileu.s m.c.sw fsbkillw h^v 0; !h! m...H^v 0; !g! m...G^v 0; !j! !m! m.oLoad Macro Library fq.s"l orq' er.s [..o fsbcreatew 14fy j4,14f=!compiled!"e :eju.r q.rm.r'"# er^y 1:w' fsbkillw 0; !n! .,(ietdsk: fsunamef6 i;notes  76.i 33.i .)fx.1 m.1 m.oNotes fq.s"l orq' et.s [..o fsbcreatew 1:,2m.zw zj 15.i12.i 11.i11.i ewfsofcdatefsfdconvertw f[dfilew e\ m.cnotes e^ f]dfile pwef fsbkillw h^v 0; !t! m.oReset Defaults fq.s"l osi' "E]*w' et.s m..g 0; !p! -1m.oPush Buffer onto fq.s"l orq' er.s ew pw [..o fsbcreatew ^y pw ef fsbkillw 0; !k! fq.t"e m...D'"#b,bx.t m...R'^v 0; !a! -1m.oWrite and Assemble fq.s"l oqu' "E]*w' et.s ewpwef fsdfileu.s :ncomplr .s (au) jp h^v 0; !c! -1m.oWrite and Compile fq.s"l oqu' "E]*w' et.s ewpwef fsdfileu.s :ncomplr .s (fuk) jp h^v 0; !u! m.v Read Unfasl erunfasl [..o fsbcreate ^y m.cunfasl fsbkill h^v 0; !v! m.v Visit Entry mPull File er.s [..o fsbcreatew ^y [d dfs^rinitud [u ufs^rinituu [d dfs^rinitud [u ufs^rinituu 3m.n [.s hv 20000000.,20000000.m.cvisit ].s et.s; ]u ]d ]u ]d fsbkillw 0l h^v 0; !x! mPull File q.su.1 cm.x.1 Delete Really?  fq.s"l odn' ed.1 0l .u.b l 0u.q 0; !z! -1m.oList Directory fq.s"l osi' et.s 0f[case f[bbindw 1:,2m.zw z-b"n mshow directory' f]bbindw f]casew h^v 0; !er! fg odn !qu! m.vAbort oer !rq! m.vRestored oer !si! m.vAbort !dn! >>,q.qm.z  *Pull File*<= 0l :fwr 4c 14x.s !PAGE! .F<=1:<.U.B 1M.YC >,3M.Z ...F<=.u.b @f l 0m.z .G<=1:<.U.B .U..I 1M.VGet from M.U G.R >,1M.Z ...G<= .u.b :I.TQ..I,. 2M.Z H<=1:<.U.B :I.TH >,2M.Z PUTS B IN ARG SLOT ..H<= :I.TB 2M.Z I<=1:<.U.B 1M.YU.TF"N1U.T' Q.T,11.I >,1M.Z J<=Q.M&100000."N FQ.T"E -1,0:M...Y'' 1:<.U.B F=.T:"E 1M.VJump to M.U Q.R'"#BM.Y'J >,3M.Z JUMP AHEAD ONE SCREEN-FULL OF LINES ..J<= 1:< .U.B FSWINDOW+BJ [1 FSLINES"E FSHEIGHT-(FSECHOLINES)-1'"#FSLINES'U1 1:"L 1M.Y"LBJ'"#ZJ'' ]1 >,3M.Z .K<=~1:<.U.B .TF-3"E 1M.YF(X..K)U.BJ 0;' Q.M&2."N 1M.YFF(X..K)L 0;' Q.M&4."N 1M.YFLF(X..K)L 0;' Q.M&40."N 1M.Y@FLF(X..K)L 0;' Q.M&10."N 1M.YFWF(X..K)L 0;' q.m&100."n m~srch either~f(x..k)l 0;' Q.M&20."N M.9F(X..K)L 0;' >,0M.Z .L<=1:<.U.B 1M.Y@L F=.T0"E 0;' Q.M&20000."E Q.M&2000."N 0;' @F l'"# :@L' >,3M.Z ...L<=1:<.U.B :I.T.TF>,2M.Z !PAGE! M<=W1:<.U.B 1U.Q 1M.YU.TF"N1U.T' Q.M&1000."E Q.T<15.I 12.I> 0;' FSHPOS-(FSADLINE)-1"L Q.T<15.I 12.I>'"# .-(-S   .)-1U.R .U.B Q.R"E0U.T' FQ.H"L '"# 15.I 12.I G.H Q.RC' Q.T,40.I ' >,Q.QM.Z BLANK LINE ..M<= 1:<.U.B 1U.Q 15.,-1A-15."E 12.,0A-12."E 15.I 12.I .U.B 2R 0;'' 15.,1A-15."E 12.,2A-12."E 15.I 12.I 0;'' [0[1 FSHPOSF(/8U0)-(Q0*8)U1 15.I 12.I Q0,9I Q1,32I ]1]0 .(Q.BJW)U.B >,Q.QM.Z .N<= 1:<.U.B Q.M&2."N 1M.YL 0;' Q.M&4."N 1M.YFLR 0;' Q.M&40."N 1:<1M.Y@FLR>F"N(1:<:FLR>"N :FWR ')FSERR ' 0;' Q.M&10."N 1M.YFWR 0;' q.m&100."n m~srch fwd~r 0;' Q.M&20."N M.9R 0;' >,3M.Z .O<=.U.B FIU.R Q.R&140.#40."NQ.R&37.600.FSREREAD .'"# FG .' ...X,...O<= 1:<.U.B 1U.Q 1M.VExecute  M.U Q.M&40000."N -1FSNOQUIT' :1<.TM.R>U.R Q.RF"L-@FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW >,Q.QM.Z .P<=r1:<.U.B 1M.Y+0"E :I.R.T1 .R"L Q.RU.T'' Q.M&2."N -1*(1M.Y)L 0;' Q.M&4."N -1*(1M.Y)FLR 0;' Q.M&40."N -1*(1M.Y)@FLR 0;' Q.M&10."N -1*(1M.Y)FWR 0;' :I.T-.T q.m&100."n m~srch either~r 0;' Q.M&20."N M.9R 0;' >,3M.Z .Q<=@FI400.FSREREADW. ...Q<=1:<.u.b FSWINDOW+BJ FSLINES-3/2,0FM>"LQ.BJ' 3M.Z .R<=1:<.U.B 1M.YR >,3M.Z !PAGE! ..S<=>B,BX..S .S<= 1:<.U.B 1U.Q [.1 [.2 [.3 [.4 0[.5 [.6 [.M 0U.1 [.K :I.K "NFG' FQ.S"N .,(G.S M.G.)FX.S 0S.S Q3J]3'  F[MODIFIED (FSQPPTR)-1U.6 B,BX.S 1,CM.VSearch 1,1M.VDefault ..S M.I :@FIU.0 FII 0A-33."E-D 1M.XNormal:  FQ.S"L M.VAbort 0;' 0S..S 1M.YS.S OEND '"# [..J q..ju.3 [.s 1m.dimmediate search q.3[..j 1m.dreverse search q..ju.4 q.3u..j 1m.dforward search q..ju.3 ]..j ].s fr 0AF"L CM.V 1M.YU.Q'"# RFQ..S<[3.U3>C Q..SU.S 0U.Q 1,CM.VDefault .S' Q.M&40000."N -1FSNOQUITW' :<0A-40."L 0A-20."E-D -:S.SU.5 Q.5"E FG' 1+Q.Q"N -1U.Q q.4u..J'.@V OELSE' 0A-16."E-D :S.SU.5 Q.5"E FG' -1+Q.Q"N 1U.Q q.3u..J'.@V OELSE' 0A-13."E-D -1*Q.QS.S FKX..K  -1,Q.6FSQPSLOTW .U.B 0U.Q 0;' 0A-26."E-D Q.2J .@V OELSE' 0A-33."E-D 0;' 0A-15."E 12.FSREREAD ' 0A-12."E 0,-1A-15."N -D Q.0FSREREADW 0;'' 0AF  "L-D Q.0FSREREADW 0;' 0A-35."E-D M.I :@FIU.0 FII' ' 0A-177."E -D M.K '"# -1@FX.S [3.U3 1+Q.Q"E .,.+FQ.S '"#C .-FQ.S,. 'F=.S"N Q.1"E %.1 WQ3U.2 TM.V 1,LM.VSearching .S' Q.QF(*FQ.S:RW):S.SU.5 Q.5"E 1M.K''"#W-1U.5'' !ELSE! FSLISTEN"E 0U.1 TM.V Q.5"E 1,LM.VFailed '"# 1,LM.VWaiting ' M.V .S .@V' M.I :@FIU.0 FII >F"L-@FEQIT"E @FG'"# FG'' TM.V 1,LM.VDone :I.T 1FSNOQUITW ]..J FR !END! 0S.S Q.SU..S ' >,Q.QF"NW2'M.Z   !PAGE! Augmented Moby Search: ^Q^S search $ replace $ Stops at each match: $ toggles Auto Inspection SP replaces then enters Inspection if Auto Inspection is on ^? skips to the next match ^I replaces the match and enters Inspection ^K kills the match and enters Inspection ^R enters Inspection without touching the match ^M does replacement on the rest of the buffer ^G quits the search Inspection is exited by $ (or ^Q$) ...S<= 1:< .U.B 1U.Q [.0[.1[.2[.3 0[.4 [..J :I..J Moby Search  .@V M.YF&2"E CM.XSearch String:  FQ.S"LOEND' :I.0S.S' "# CM.XSearch Code:  FQ.S"LOEND' Q.SU.0' M.YF&1"E 1M.XReplace String:  FQ.S"LOEND' :I.1.S 0U.3 ' "# 1M.XReplace Code:  FQ.S"LOEND' Q.SU.1 -1U.3 ' F+ FSLINES/3F[LINES :FI-27"E FIW Q.4"L CM.VNo Auto Inspection 0U.4 ' "# CM.VAuto Inspection -1u.4 ' OREAD ' :FI-7"E FIW 0;' :FI-11."E FIW <.+FKU.BM.1W Q.3"E Q.B,.'"# W'@V 10000000.,10000000.M.CInspect %.2;M.0;>Q.2:; OSRCH' :FI-13."E FIW <.+FKU.B FKDW Q.3"E Q.B,.'"# W'@V 10000000.,10000000.M.CInspect %.2;M.0;>Q.2:; OSRCH' :FI-15."E FIW CM.VRunning0;' :FI-22."E FIW 10000000.,10000000.M.CInspect OSRCH ' :FI-40."E FIW <.+FKU.BM.1W Q.3"E Q.B,.'"# W'@V Q.4"L 10000000.,10000000.M.CInspect ' %.2;M.0;>Q.2:;' "# FI-177."E<%.2;M.0;>Q.2:;' "#7FSIMAG OREAD''> 1,CM.VDone F]LINES !END! ]..J].2].1].0 >,Q.QM.ZW H !page! .T<=1:<.U.B FQ.T"E .U...T'"# 1M.VSave In 1M.U .U.R' >,3M.Z ...T<=1:<.U.B FQ.T"E Q...T,.U...TJ'"# M.U Q.R,.U.RJ'>,3M.Z .U<=1:<.U.B 1U.Q 1M.Y+0"E :I.R.T1 .R"L Q.RU.T'' Q.M&12."N [.1 FSHPOSU.1 -1*(1M.Y)L <0,1AF:;-L 0-.;> ].1 3U.Q 0;' Q.M&44."N -1*(1M.Y)FUL 3U.Q 0;' q.m&100."n m~srch .U~ w0;' Q.M&20."N :I.T-.T M.7L 3U.Q 0;' >,Q.QM.Z .V<= 1:<.U.B 1U.Q F=.T:"E J 3U.Q 0; ' 2U.Q F[BBIND [.0 FQ.T:"G 4U.0 '"# F=.T-"E -4U.0 0,0X.T ' "# .T*4U.0 Q.0^:= '' Q.0[.1 [.2 FQ.T:"G 1M.VArgument: W '"# 32FSECHOOUT ' :<:FI:fcU.0 1) 0;' Q.0F-:+BHZ.,^+1"G FII 0AFSECHOOUT 0;' Q.0-F"E FII 0AFSECHOOUT FII 0AFSECHOOUT0;' Q.0FLDUW+1"G FI FII FFSECHOOUT 0AFSECHOOUT 0;' Q.0-177."E FIU.0 M.G 0;' -1U.0> Q.0"L 0;'>"L FG HK 3U.Q M.VAborted '"# Z"E Q.1\ '"# 32fsechoout' HFX.T ' ].2 ].1 ].0 F]BBINDW >,Q.QM.Z  .W<= Q.M&20000000."N B-."EFQ.T"EZJ'' 327.FSREREADW 0FS^REXIT' 1:<.U.B 3U.Q .TF-3"E 1M.YFU.RU.B O' Q.M&4."N 1M.YFLU.RU.B O' Q.M&40."N 1M.Y@FLU.RU.B O' Q.M&20."N M.9FU.RU.B O' q.m&100."n m~srch either~u.ru.b o' FQ.T"E 1:"LZJ' .U.R O' F=.T-"E 1:<-(FSLINES),0@FM>"LBJ' .,Q.BU.RU.B O' Q.M&2."N 1M.YFU.RU.B O' Q.M&10."N 1M.YFWU.RU.B O'  !! Q.B,Q.RFSBOUND-Z+(J B,BX.T 20000000.M.CWINDOW Z)FSBOUNDW H@V 2U.Q >,Q.QM.Z .X<=1:<.U.B 1M.YC >,0M.Z !PAGE! .Y<=1:<.U.B 1U.Q [.0[.1[.2 Q.M&1000."N I  (FQ.H"L Q.H/8<11.I> Q.H-(8*(Q.H/8))<40.I>73.I'"# G.H') 0;' !! 0A-51."E( !*! -FLU.1U.0 Q.0U.B Q.0J .@V :FI-51."E Q.1J FII .-1,.@V O*' :FI-"N Q.0J OFINIS'FIWQ.1J )' -1A-15."E-1'"#0'FU.1U.0 Q.0U.B Q.0J !**! <1A-40."N1A-11."N0;''C> .@V :FI-"N OFINIS'"#FIW' .,Q.1:FB  "E Q.1J .@V (FI-"E O'"# OOUT ') ' O** !FINIS! FSHPOSU.0 Q.1J -1A-15."N 15.I 12.I' FQ.T"G 0U.1'"# WQ.0/8U.1 Q.0-(8*Q.1)U.0'Q.1<11.I> Q.0<40.I> !OUT! ].2].1].0 >,Q.QM.Z .Z,*Flush*<=1:<.U.B .TF-3"E 1M.YU.BJ 0;' Q.M&2."N 1M.YFL 0;' Q.M&4."N 1M.YFLL 0;' Q.M&40."N 1M.Y@FLL 0;' Q.M&10."N 1M.YFWL 0;' q.m&100."n m~srch either~l 0;' Q.M&20."N M.9L >,0M.Z [<=Q.M&10000000."N.'"#0FS^REXIT' ..[<=1FS^REXIT ...[<= 1:<.U.B 1U.Q 1M.VExecute Qregister 27FSREREADW M.U Q.M&40000."N -1FSNOQUIT' :1<.TM.R>U.R Q.RF"L-^FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW >,Q.QM.Z .\<=1:<.U.B 1M.YU.TF"N1U.T' -Q.TU.T Q.T@L Q.M&20000."E Q.M&2000."N 0;' @F l'"# :@L' >,3M.Z .]<=W.U.B FIFS^RINSERT 0,3M.Z !PAGE! .^<= 1:<.U.B FQ.T"G (.T+(FSLines))MSet Screen Size ' "# F+ 0U..H '>,3M.ZW ...^<= 1:<.U.B FQ.T"G .TMSet Screen Size ' "# FSHeightMSet Screen Size ' >,3M.ZW *Set Screen Size*<= [0[1[2 U2 Q2:"G 1U2 ' (FSHeight-(FSEcholines)-1)U1 QSplit Screen"G (Q1-(Q2+2))"L (Q1-2)U2 ' (Q2-(FSLines))U1 Q2FSLines (QOther Lines-Q1)UOther Lines FSTopline"G (FSTopline-Q1)FSTopline (QMiddle Screen-Q1)UMiddle Screen ' "# (QOther Topline+Q1)UOther Topline (QMiddle Screen+Q1)UMiddle Screen ' MSplit Refresh' "# Q1-Q2:"G Q1U2 ' FSLinesU0 Q2FSLines Q0-Q2"G (FSTopline)+(FSLines)F[Topline Q0-(FSLines)F[Lines F+ F]Lines F]Topline ' "# @V ' 0U..H '  Make current line be top of screen. ...^<=1@:F 0 ._<=1:<.U.B 1U.Q [0 1M.VMacro:  @FIU.S Q.SFSECHOOUT W.TF"E Q.S@FS^RCMACU0 G0 '"# M.YX0 Q0,Q.S@FS^RCMAC' ]0 >,Q.QM.Z =W1:<.U.B ."EFG 3U.Q 0; ' Q.M&10000."E 0,0A-9"E (FSHPOS)-(-DW FSHPOS)-1,32I 1U.Q 0;'' 0U.Q 1M.YF-1"E 1M.YR '"# R'>,Q.QM.Z ..=FG. ..._<=FG. ..._<=.u.b [0 1M.VMeta Macro:  400.@FIU.S Q.SFSECHOOUT W.TF"E Q.S@FS^RCMACU0 G0 1U.Q'"# M.YX0 Q0,Q.S@FS^RCMAC 3U.Q' ]0 Q.QM.Z  <= 1:< .U.B 1U.Q 1M.YU.TF"N1U.T' Q.M&1000."E Q.T<40.FS^RINSERT> 3U.Q 0;' FSHPOS-(FSADLINE)"G .-(-S   .)-1U.R .U.B Q.R"E0U.T' FQ.H"L '"# 15.I 12.I G.H WQ.B,.@V Q.RC' W.@V' Q.T<40.FS^RINSERT> (fsrgetty)"N 3'"# -1'U.Q >,Q.QM.Z ;<=1:<.U.B 1M.YU.TF"N1U.T' Q.T<;FS^RINSERT> >,3M.Z :,-<=Q.M&1."NQ..0M.J'"#Q..0FS^RINSERT.' 1,2,3,4,5,6,7,8<=Q.M&1."NQ..0M.J'"#Q..0FS^RINSERT.' 9,0<=Q.M&1."NQ..0M.J'"#Q..0FS^RINSERT.'  !PAGE! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; META MACROS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELETE 0,. ..<<=.u.b :I.TB,. 2M.Z DELETE .,Z ..><=.u.b :I.T.,Z 2M.Z DELETE LINES NOT CONTAINING TARGET ..+<= :1<1M.X Delete Lines without:  FQ.S"L 0;' 0S.S FQ.T"E HU.RU.B O' .TF-3"E 1M.YFU.RU.B O' Q.M&2."N M.YFU.RU.B O' Q.M&4."N M.YFLU.RU.B O' Q.M&40."N M.Y@FLU.RU.B O' Q.M&10."N M.YFWU.RU.B O' q.m&100."n m~srch either~u.ru.b o' Q.M&20."N M.9FU.RU.B ' !! Q.B,Q.RFSBOUND-Z+(Q.M&40000."N -1FSNOQUITW'J :<:SU.RQ.R;Q.R+1"NL'"#0LK'>U.RQ.RF"L-@FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW Z)FSBOUNDW H@V>,3M.Z DELETE LINES CONTAINING TARGET ..-<= :1<1M.X Delete Lines with:  FQ.S"L 0;' 0S.S FQ.T"E HU.RU.B O' .TF-3"E 1M.YFU.RU.B O' Q.M&2."N M.YFU.RU.B O' Q.M&4."N M.YFLU.RU.B O' Q.M&40."N M.Y@FLU.RU.B O' Q.M&10."N M.YFWU.RU.B O' q.m&100."n m~srch either~u.ru.b o' Q.M&20."N M.9FU.RU.B ' !! Q.B,Q.RFSBOUND-Z+(Q.M&40000."N -1FSNOQUITW'J :<:SU.RQ.R;Q.R+1"EL'"#0LK'>U.RQ.RF"L-@FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW Z)FSBOUNDW H@V>,3M.Z !page! ..@<= 1:<.U.B 3U.Q fsdfileu.s [.S Cm.vI/O  M.O@ List on TPL: FQ.S"L 0;' ET.S fsdfileu.s :@ .S (L[LISP] %)P ].S ET.S H@V>,Q.QM.Z *@default*<=(L[LISP] % F[25FGB1,22FG,25FG1]) Underline a bunch of stuff .._<= 1:< .u.b .tf-3"e 1m.yfu.ru.b o' q.m&2."n 1m.yfu.ru.b o' q.m&4."n 1m.yflu.ru.b o' q.m&40."n 1m.y@flu.ru.b o' q.m&10."n 1m.yfwu.ru.b o' q.m&100."n m~srch either~u.ru.b o' q.m&20."n 1m.9fu.ru.b ' !! q.bj q.b,q.r<1a"bc'"#ci_'> >,1m.z ...X<=1:<.U.B f[dfile Cm.vI/O  M.O@ List on XGP FQ.S"L 0;' ET.S fsdfileu.s q@defaultu.r :@ .S .rP H@V>,3M.Z  ...K<= 1:<.U.B 3U.Q fsdfileu.s [.S Cm.vI/O  M.OSRCCOM: FQ.S"L 0;' ET.S 3M.N Q.SU.R 0M.N :SRCCOM .R;.S _.S CMPARC /@ P ].S ET.S H@V>,Q.QM.Z ...W<=z Q.M&20000000."N 727.FSREREADW 0FS^REXIT' 1:< .U.B 3U.Q F=.T-"E :I.T-1' .,(1M.Y"L 1M.Y-1:S..W"EBJ'"#L''"# 1M.Y:S..W"EZJ' L' .)FFSBOUND-Z+(J B,BX.T 777.,20000756.M.CPIECE Z)FSBOUNDW H@V 2U.Q >,Q.QM.Z  !PAGE! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; META-ALTMODE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <=>y54003.MINTERNMETA .M Q..DMINTERNMETA ..D MINTERNMETA .9 MINTERNMETA .8 MINTERNMETA .7 ...A<= QMETA .M,Q.MUMETA .MU.M M.DW M.AW :FIW QMETA .M,Q.MUMETA .MU.M M.D . ...R<= QMETA .7,Q.7UMETA .7U.7 QMETA .8,Q.8UMETA .8U.8 QMETA .9,Q.9UMETA .9U.9 QMETA .M,Q.MUMETA .MU.M QMETA ..D,Q..DUMETA ..DU..D M.D . ...N<= QMETA .M[.M QMETA .9[.9 QMETA ..D[..D M.N  ...P<= QMETA .M[.M QMETA .9[.9 QMETA ..D[..D M.P  ...U<= QMETA .M[.M QMETA .7[.7 QMETA ..D[..D M.U  ...D<= QMETA .M[.M QMETA .8[.8 QMETA ..D[..D M.D  ...K<= QMETA .M[.M QMETA .9[.9 QMETA ..D[..D M.K  ...Z<= QMETA .M[.M QMETA .9[.9 QMETA ..D[..D M.Z   !page! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; OTHER USER AUXILIARY MACROS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BUILD A STRING AND JUMP TO THE MIDDLE .A<=[A [F [G .( FSHPOSF(/8UF)-(QF*8)UG <UA QA-33."E 0;' QA-177."EM.CTYPEIN:'"#QAI' 0A-12."E QF,11.I QG,40.I'> .U.B [.B <UA QA-33."E 0;' QA-177."EM.CTYPEIN:'"#QAI' 0A-12."E QF,11.I QG,40.I'> ].B ),.+(Q.BJ)  DRAW A BOX FOR HEADING ...B<=:1<.u.b 15.I12.I FSADLINES,73.I 15.I 12.I FQ.T"N [.B M...IW ].B :I.H;;; 1000.Q.MU.M M.D' 3,73.I .U.Q 15.I 12.I FSADLINES,73.I 15.I 12.I Q.B,.@V Q.QJ>,3M.Z CHANGE X TO Y THROUGHOUT BUFFER ...C<= :1<1M.XChange:  FQ.S"L 0;' 0S.S 1M.X to:  FQ.S"L 0;' FQ.T"E HU.RU.B O' .TF-3"E 1M.YFU.RU.B O' Q.M&2."N M.YFU.RU.B O' Q.M&4."N M.YFLU.RU.B O' Q.M&40."N M.Y@FLU.RU.B O' Q.M&10."N M.YFWU.RU.B O' q.m&100."n m~srch either~u.ru.b o' Q.M&20."N M.9FU.RU.B ' !! Q.B,Q.RFSBOUND-Z+(Q.M&40000."N -1FSNOQUITW'J :<:S;.S>U.R Q.RF"L-@FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW Z)FSBOUNDW H@V>,3M.Z !PAGE! BULK DELETER *Segment Directory*<= J :S  2"E hk '"# 0L B,.-2K ZJ -S 2L .,ZK ' Z *File Version*<= .U4 6+7C .U6 !NUM! (Q6+6-.)"G \U5 Q5"E C ONUM '' 1 Q5"N 0L 6,Q5\'"#Q6J 6X4 0L G4' *File Search*<=0SD  2 *Make Search Fnm*<=G2 I  J .,.+6FX2 HK SPECIAL BULK DELETER WHICH KNOWS ABOUT "FOO UDLnnn" HACK ...D<= 1:<.u.b !STEP 1 - DIRECTORY SEGMENT! fsdfileu.s [.S Cm.vI/O  -1M.OBulk Delete FQ.S"L OMIN' [1 [2 [3 -1F[FNAMSYNTW ET.S F]FNAMSYNTW fsdfileu.s Q.SU1 0M.N Q.SU2 [..O FSBCREATEW MMake Search Fnm mformat directory J 2X3 :2K msegment directory"e AM.V[Nothing to Delete] obkill ' [4 [5 [6 [D[U[d[u @:ID| .U.B 0,3F=D/U"N ID 1M.Z'"# 1M.Y:<0L DID.-1,.@V L>(.U.B),3M.Z' | @:IU| .U.B 0,3F=D/U"N IU 1M.Z'"# 1M.Y:<0L DI .-1,.@V L>(.U.B),3M.Z' | @:Id| .U.B 0,3F=D/U"N Id 1M.Z'"# 1M.Y:<0L DID.-1,.@V L>(.U.B),3M.Z' | @:Iu| .U.B 0,3F=D/U"N Iu 1M.Z'"# 1M.Y:<0L DI .-1,.@V L>(.U.B),3M.Z' | !STEP 2 - TYPE EACH ENTRY! JK <.-Z; MFile Version L> !SPARE LAST 2! J6CL J<.-Z;6DL> ZJ mFile Search 2M.Y<-S;DI > !CHOICE! J ID/U  G3 0u..h [1 [2 [3 B,BX.T M.CDELETE ]3 ]2 ]1 J 2K HX4 Q3U5 Q3U6 <.-Z; 1F=D"E L'"#K'> Z-B"E OEXIT' H@FX5 G4 J<.-Z; 1F=D"E K'"#L'> H@FX6 !OK?! HK II WILL LEAVE:  G6 FSRGETTY"EHT' HV 0U.P -1,CM.XLeaving  FQ.S"L OEXIT' F=.SBACK&(F=.SB)"E HK G4 OCHOICE' F=.SYES&(F=.SY)&(F=.ST)"E ODELETE' HK II AM ABOUT TO DELETE:  G5 HV 0U.P -1,CM.XDELETE ABOVE?  FQ.S"L OEXIT' F=.SBACK&(F=.SB)"E HK G4 OCHOICE' F=.SYES&(F=.SY)&(F=.ST)"E ODELETE' OOK? !DELETE! HK G5J 2K 0S2 ET1 <.-Z; S; FKC 0K I1: L> M..O !EXIT! ]u]d ]U ]D ]6 ]5 ]4 !BKILL! FSBKILLW ]3 ]2 ]1 !MIN! ].S ET.S 0U..H H@V 3U.Q >,Q.QM.Z *Right File*<=14c !PAGE! DIRECTORY EDITOR ...E<= -1,M...R *namestring*<= <.-z; 6d fsdsnamef6i;13c :kl> MULTI-FILE PROGRAM EDIT ...F<= 1:<.U.B [W 0UW [A[S 0U.P Cm.vI/O  M.OMulti File Program FQ.S"L M.VAbort 0;' ER.S 0U.P -1,1M.XChange Intended?  (f~.SY)*(f~.SYES)*(f~.ST)"E 1UW' 0U.P -1,1M.XApply Macro?  (f~.SY)*(f~.SYES)*(f~.ST)"E 1M.VCommand M.U Q.RUS'"# 1US' Q..J([..J)U..J Q.M([.M)10000000.U.M M.D [..O FSBCREATEW @Y <.-Z; 1AF ; "LL'"#K'> J Q..OUA [..O FSBCREATEW :<[..O QAU..O .-Z"E J ]..O 0;' :X.S L ]..O :1,3M.ZW FQS"L [W[A[S M.C.S ]S]A]W'"# 1:F"L,3M.ZW[W[A[S M.C.S ]S]A]W'' QW:W >W QW"E FSBKILLW ODONE' !FILE! 0U.P -1,1M.XFile?  (f~.SY)*(f~.SYES)*(f~.ST)"E FSBKILLW :< .-Z; :X.S 1:"L ED.S ENSYSXXX.S'>,3M.ZW L>W '"# (f~.SR)*(f~.SREVIEW)"E :<[..O QAU..O .-Z"E J ]..O 0;' :X.S L ]..O ET.S :1,3M.ZW >W OFILE '"# (f~.SS)*(f~.SSRCCOM)"E [1[2 :<[..O QAU..O .-Z"E J ]..O 0;' :X.S L ]..O ET.S 1:,3M.ZW >W ]2]1 OFILE '"# (f~.SN)*(f~.SNO)"E FSBKILLW :<.-Z; :X.S L :1,3M.ZW >W '"#OFILE '''' !DONE! FSBKILLW H@V 3U.Q>,3M.Z  !PAGE! GET (LOAD) A LIBRARY ...G<= .u.b fsdfileu.s FNET.S 1:<.U.B ET.TECO.;MODLIB  -2"E :I.S '"# Cm.vI/O  M.OLoad Library:  FQ.S"L 0;'' [7[6[5[4[3[2[1 Q.SU1 [..O Q.FU..O J ET.S fsdfileu.s :S.S"E ZJ 1:<:EJU2 F=1SYSTEM"E1'"#0',Q2M2>"L0U.P 1M.V.S No Such Library' 0;' S W:\U1 <\F(U4)-1;C> :@i6|:fo..q2u5 q5"g f~:..q(q5)2"n -q5u5'' q..q[..o q5"l-5*q5j .(0fsword*5,0i)j q2,.fswordw'"#q5*5j' q3,.+5fswordw q7,.+10fsword ]..o| :w wfsbkillw]1]4]5q5j'"# q2(c\+q1u7c:x2)2"eq3u2'"#m6'''> >,3M.Z  GET HELP ABOUT A LIBRARY, USE MACRO CHARACTERS ...H<={ .u.b fsdfileu.s FNET.S 1:< ET.TECO.;MODLIB  Cm.vI/O  M.ODocument Library:  FQ.S"L 0;' [5[4[3[2[1[0 Q.SU1 [..O Q.FU..O J ET.S fsdfileu.s :S.S"E ZJ 1:<:EJU1 .(1,Q1M1)J>"L 0U.P 1M.V.S No Such Library 0;'' S W:\U1 <\F(U2)-1;C> .,Q2FSBOUND( :I4 Not defined  0U0 [..O FSBCREATEW :<CM.VMacro:  @:FIU5 1M.I FI:fc:I.S F=.S"E 0;' Q0"N FT.S '"#F+' F=.S"E Q0"N [1[0 J M.CHELP HK ]0]1 ' 1-Q0U0 OEND ' F=.S?"E Q..OU4 Q.FU..O J I - G2 64,-I 15.I 12.I Q.FU..O '> Q4U..O :I4 Not defined  BU5 ODISP' F=.SQ"E M.U Q.RU5 IQregister -  I5 [..O 1F[BOTH Q.FU..O J :S 5"E Q4U2'"# -S*W C\WC\+Q1U2' F]BOTH ]..O OG2' F=.S"E CM.VMeta Macro:  400.@FIU5' Q5U3 1 .,(Q5\ I* .)FX5 [..O Q.FU..O J :S 5"E Q4U2'"# C\WC\+Q1U2' ]..O !G2! I - .U5 G2 64,-I 15.I 12.I !DISP! Q5J Q0"E :FT HTHK' ZJ !END!>,2M.ZW FSBKILLW )FSBOUNDW ZJ ]..O H@V>,3M.Z  !PAGE! DISPLAY THE DATE//TIME INTO THE BUFFER ...I<=.u.b 6M.N I;;; .S  2M.N I.S  6R I: 2C I: L 0,-1M.Z !page! ADJUST IN ALLOWABLE WIDTH J<=>72FSADLINES n 0 FIRST LINE 1 FRONT LOC OF PREFIX 2 LAST LOC OF PREFIX 3 CHAR PREFIX 4 PREFIX LENGTH 5 PREFIX HPOS ...J<=1:<.u.b [0[1[2[3[4[5 <.-Z; .-1,.+1F= "N0;'L> L 0,1A-15."E-L' .-Z"E0L' .U1 <0,1AF ; "L0;'C> .U2 FSHPOSU5 Q1,Q2X3 F=.T-"E 1M.X Old Prefix:  FQ.S"L' .,(G.S FSHPOSU5 .)FX3' FQ3U4 .U0 <-L B-.; 1AF.+1"GL0;' Q4F=3"N 0;' 0,Q4+1AF ; ;> .U.B Q0(.U0)J "N>W Q.B,.' .-ZU1 Q0J 1U2 Q0J F=.T-&(F=.T:)"N L .U0'"# Q4D' F=.T-"E 1M.X New Prefix:  FQ.S+1"G .,(G.S FSHPOSU5 .)FX3'' FSADLINEF(-Q5FSADLINEW F=.T:"E Q0,Z+Q1FA'"# Q0,Z+Q1@FA' )FSADLINEW .-ZU2 Q0J Z+Q2J >,1M.Z  Center a line of text between 0 and FSAdline$ ...K,*center*<=:1<[0[1 .u.b 1M.Yu0 q0"e 1u0 ' q0<0l .u1 Q1-Q.B"L Q1U.B' :L .-Q1"G -:^flk 0l :^flk :L (fsadline)-(.-q1)u1 Q1"G 0l (Q1/2)U1 (Q1/8)"G (Q1/8),9I ' (q1&7)"G (Q1&7),32i ' ' ' q0"g l .-z; '"# -l 0-.;'>>,1M.Z TRANSMIT BUFFER TO LISP (OR SUB PART) ...L<=1:<.u.b [.2[.0[.1 .U.2 .TFU.1 Q.1"G(Q.1-3"E .TF'"# 0M.YFL'U.1U.0) '"#1FLU.1U.0 ' Q.1J 3I-D Q.0J  Q.2J H@V 3U.Q ].1].0].2>,3M.Z INTO TECO INFERIOR MODE; STORE STRING IN ...N <=>2minternmini teco lines ...M<=1:<.u.b [2 0U2 [1 .U1 8<1:<>:; [1.U1 %2W> [1[2 [..O FSBCREATE qmini teco linesF[LINESW 10000777.,(FQ.T"NB,BX.T 377.'"#774.')M.CMINI TECO HFX...N F]LINESW FSBKILLW ]2]1 Q2 Q1J ]1]2 Q.M&40000."N -1FSNOQUITW' 1:U.R Q.RF"L-@FEQIT"E @FG' Q.R,2M.ZW' 1FSNOQUITW H@V>,3M.Z !page! DISPLAY THE WHOLE BUFFER ...O<=.u.b FSWINDOW+1F"G+B-1'"#.',ZM.YFV :FIW 3M.Z SET PREFIX TO POINT ON LINE OR PREFIX P<=>B,BX.H  ...P<=.u.b 3U.Q .,(0L.)FX.H FQ.HC Q.M1000.U.M M.D 3M.Z *Reap Count*<= .+6,.+12X2 0U4 SPECIAL REAPER WHICH KNOWS ABOUT "FOO UDLnnn" HACK ...R<= 1:<.u.b !STEP 1 - DIRECTORY SEGMENT! fsdfileu.s [.S "E Cm.vI/O  -1M.OClean Directory?'"# Cm.vI/O  M.ODirectory Edit' FQ.S"L OMIN' [1 [2 [3 ET.S fsdfileu.s Q.SU1 [..O FSBCREATEW mformat directory J 2X3 2K [4 [5 [6 [D[U[d[u @:ID| .U.B 0,3F=D/U"N ID 1M.Z'"# 1M.Y:<0L DID.-1,.@V L>(.U.B),3M.Z' | @:IU| .U.B 0,3F=D/U"N IU 1M.Z'"# 1M.Y:<0L DI .-1,.@V L>(.U.B),3M.Z' | @:Id| .U.B 0,3F=D/U"N Id 1M.Z'"# 1M.Y:<0L DID.-1,.@V L>(.U.B),3M.Z' | @:Iu| .U.B 0,3F=D/U"N Iu 1M.Z'"# 1M.Y:<0L DI .-1,.@V L>(.U.B),3M.Z' | "E !STEP 2 - TYPE EACH ENTRY SPARE LAST 2! J <.-Z; .U5 mReap Count Q5,.FSBOUND-Z+( Q4-(2M.Y)"LHK'"# J :<.-Z; mFile Version L>,2M.ZW J6CL J<.-Z;6DL> MFile Search ZJ 2M.Y<-S;DI > -:S"E HK '' ZJ Z)FSBOUNDW> ' !CHOICE! Z-B"E am.v[Nothing to Reap] OEXIT' J ID/U  G3 0u..h [1 [2 [3 B,BX.T "E M.CDELETE'"#M.CDIRECTORY' ]3 ]2 ]1 J 2K HX4 Q3U5 Q3U6 <.-Z; 1F=D"E L'"#K'> Z-B"E OEXIT' H@FX5 G4 J<.-Z; 1F=D"E K'"#L'> H@FX6 !OK?! HK II AM ABOUT TO DELETE:  G5 HV 0U.P -1,CM.XDelete Above?  FQ.S"L OEXIT' F=.SBACK&(F=.SB)"E HK G4 OCHOICE' F=.SYES&(F=.SY)&(F=.ST)"E ODELETE' HK II WILL LEAVE:  G6 FSRGETTY"EHT' HV 0U.P -1,CM.XLeaving  FQ.S"L OEXIT' F=.SBACK&(F=.SB)"E HK G4 OCHOICE' F=.SYES&(F=.SY)&(F=.ST)"E ODELETE' OOK? !DELETE! HK G5J 2K ET1 <.-Z; MFile Left 0K I1: L> M..O !EXIT! ]u]d ]U ]D ]6 ]5 ]4 !BKILL! FSBKILLW ]3 ]2 ]1 !MIN! ].S ET.S 0U..H H@V 3U.Q >,Q.QM.Z *File Left*<=6c !page! *search pattern*<=DEFUN *search action*<=0l ...S<= 1:<.u.b fq.t"e bj' qsearch pattern[..s 316.fsrereadw m.S@v msearch action>,3m.z  ...U<=1:< .u.b 1a-(1a:fc)u.q .tf-3"e 1m.yfu.ru.b o' q.m&2."n 1m.yfu.ru.b o' q.m&4."n 1m.yflu.ru.b o' q.m&40."n 1m.y@flu.ru.b o' q.m&10."n 1m.yfwu.ru.b o' q.m&100."n m~srch either~u.ru.b o' q.m&20."n 1m.9fu.ru.b ' !!q.q"n q.b,q.rf(@fc)l'"#q.b,q.rf(fc)l' >,1m.z INTO ^R MODE RECURSIVELY AROUND A SECTION OF TEXT DELIMITED BY ********* AS IN A SRCCOM OUTPUT ...W<=1:<.u.b 1M.XDelimiter:  Q.SU..W 727.FSREREADW :@I.9| F=.T-"E :I.T-1' Q.Q"EHK' 1M.Y"LZJ'"#BJ' 727.FSREREADW 2U.Q H | >,3M.Z INDENTER CALLED BY AUTO INDENT MODE ...Y<= 1:< .U.B -1U.Q [1 0U1 [2 :1<:-FUU1U1>W -@FLR .-Q1"N 0FFSBOUND( :<.U2 -@FLR Q1-.;>W Q2J )FSBOUNDW' <0,0A-47."N0;'R> FSHPOSU1 Q.BJ 15.I 12.I Q1/8F(,11.I)*(-8)+Q1,40.I ]2 ]1 >,Q.QM.Z ...Z<= FQ.T"E 200000.FSEXITF+ 0U..H H@V 3M.Z'"# -1,1M.XFlush this Teco?  FQ.S"L .' F=.SYES&(F=.SY)&(F=.ST)"E 160000.FSEXIT'.' .9<= F=.T-"E :I.T-1' Q.Q"EHK' 1M.Y"LZJ'"#BJ' 727.FSREREADW 2U.Q H ..W<=  !page! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; printing console support ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; *~printing tty setup~*<= 1fsshowmodew m~printing tty .e default~ m~printing tty "normal"~ q~printing tty .G~u.g q~printing tty .J~u.j q~printing tty ~u.S q~printing tty ~u.Y q~printing tty ~u.^ q~printing tty toggle~u...^ q~printing tty options~u...A q~printing tty .Z~u.z !!!!! PART I !!!!! SET STATE WORD (.E [EXPLAINED IN .Z CODE]) +~printing tty .e default~*<= 16402.U.E DON'T ECHO ANY CHARACTER TYPED (LINE 1); BUT REENABLE ECHO FOR "NORMAL" ALPHANUMERIC CHARACTERS. +~printing tty "normal"~*<=1FS^RECHOW :I.S .U.B 1M.YF-1"E1M.Y'"#1',Q..0I 0,-1M.Z  Q.SFS^RNORMALW !!!!! PART II !!!!! HAVE "ECHO AREA DISPLAY BACKSPACE" (MAY NEED FIXING) +~printing tty .G~*<=2<-Z; 8FSIMAGEW 0A-40.;> -DW MUST MODIFY ARGUMENT BUILDER FOR PRINTING CONSOLE +~printing tty .J~*<= .U.B Q.M&1"E Q..0FS^RINSERT W' :FIF(U.R)-40."L Q.R-33."E FIW' Q.RF +1"G Q..0FS^RINSERT 1M.Z'"# :Q..0:I.T 2M.Z'' Q.RF:-0123456789"L Q..0FS^RINSERTW 1M.Z' [..O FSBCREATEW Q..0I Q..0FSECHOOUT :< Q.RI FIFSECHOOUT :FIU.R Q.R-40."L Q.R-33."E FIW' Q.RF +1:"G FT[HT FT.R] HFX.T FSBKILLW 2M.Z' 0;' Q.RF:-0123456789"L 0;'> HFX.S FSBKILLW FQ.S"G G.S B,BX.S' .U.B 3M.Z !page! SEARCH ONLY IN "NORMAL MODE" NO FANCY SEARCH. +~printing tty ~*<=1:< .U.B 1U.Q Q.M&176."N B,BX.S 1U.P 1M.XSrch: <-..S-> FQ.S"L M.VAbort ' FQ.S"N Q.SU..S'"# Q..SU.S' 1M.Y:S.S"E7FSIMAGE' (Q.E&4000."N1'"#0'#(Q.E&4/4))"N' 3U.Q 0;' >,Q.QM.Z THIS ^Y ALWAYS KNOWS THE RIGHT LOCATION TO ALIGN UNDER AND DOES NOT ASK USER. +~printing tty ~*<=1:< .U.B 1U.Q Q.M&176."N [1 0U1 [2 :1<:-FUU1U1>W -@FLR .-Q1"N 0FFSBOUND( :<.U2 -@FLR Q1-.;>W Q2J )FSBOUNDW' <0,0A-47."N0;'R> FSHPOSU1 Q.BJ 15.I 12.I Q1/8F(,11.I)*(-8)+Q1,40.I ]2 ]1 0;' >,Q.QM.Z DISPLAY CONTEXT OF WHERE WE ARE; CAN'T CALL .Z +~printing tty ~*<=Q.E&3"E FT\' (Q.E&1000."N1'"#0' (Q.E&4/4))"N 0L' -1F[NOQUITW FSHPOSU.R 13,1A-13"N FT  Q.R/8F()*(-8)+Q.R' 1:<1M.YT>F"L-@FEQIT"E @FG F+'"# FG'' :F-ZU.RWQ.R"EFT ' 0T F]NOQUITW B,BX.T Q.E&(-64)2U.E EITHER SET THE TOGGLE STATE BIT FOR NEXT COMMAND; OR IF ARG IS ZERO ACCEPT CHANGE OF STATE. +~printing tty toggle~*<= Q.E#4.U.E +~printing tty options~*<= 3U.Q [.0 [.1 1M.VOption: 1M.I FI:fcU.1 Q.1-40.F"L+140.U.1' 1 FT  Q.E&700.Q.0"N FTDisplay Q.E&100.Q.0"N FT Insert;' Q.E&200.Q.0"N FT Delete;' Q.E&400.Q.0"N FT Motion;' Q.E&1000.Q.0"N FT Alternate ^^;' Q.E&2000.Q.0"N FT ^^ After Typeout;' Q.E&4000.Q.0"N FT 0T After Search;' Q.E&10000.Q.0"N FT Context After Large Motion' ].1 ].0 !PAGE! !!!!! PART III!!!!! INTERPRETATION OF .E BIT ARGUMENT TO ^OA MEANING TO TOGGLE STATE 100. I PRINT MULTI-LINE INSERTS 200. D PRINT TEXT OF MULTI-LINE DELETE 400. M PRINT BEGINNING OF LINE CONTAINING THE CURSOR IF THE CURSOR HAS MOVED MORE THAN ONE LINE 1000. ^ HAVE ^^ DO A 0L BEFORE DISPLAY 2000. T IF SYSTEM TYPES TO THE USER DO A ^^ AFTERWARDS 4000. S SEARCH DISPLAYS THE BEGINNING OF THE LINE CURSOR HAS MOVED TO 10000. C AFTER A "LARGE" MOTION COMMAND DISPLAY THE LINE THE CURSOR IS AT. THE FOLLOWING BITS ARE NOT USER SETABLE 4. CAUSE ALL THE STATE BITS TO BE COMPLEMENTED FOR ONLY THE NEXT COMMAND 2.&1. OLD COMMAND (SEE BELOW) 10. OLD DIRECTION (SEE BELOW) 40.&20. OLD MULTI-LINE FLAG (SEE BELOW) THE FOLLOWING Q-REGISTERS ARE USED BY .Z AND HAVE THE INDICATED SEMANTICS. B CURSOR POSITION AT BEGIN OF COMMAND E CURSOR POSITION AT END OF COMMAND C COMMAND (-1 - SIMPLE INSERT ONLY FORWARD MOTION; 0 - DELETE; 1 - INSERT; 2 - NOOP; 3 - CURSOR MOTION) D DIRECTION (0 - BACKWARDS; 1 - FORWARDS) L CRLF PASSED (0 - NONE, -N - SOME, 1 - LARGE NUMBER) .C, .D, .L - OLD VALUES OF C, D, AND L FROM LAST COMMAND T THE VALUE OF THE TOGGLE STATE FOR THIS COMMAND FLAG .P SYSTEM HAS TYPED OUT (0 - FALSE; 1-TRUE) !PAGE! +~printing tty .Z~*<=z F"L-@FEQIT"E @FG F+'"#FG'' 0fsquit "L Q.E&3"EFT\' Q.B,.T B,BX.T Q.E&(-64)1U.E ' [B Q.BUB [E .UE [C UC [.C Q.E&3U.C [D QE-QB"L0'"#1'UD [.D Q.E&10."N1'"#0'U.D [L .(QEJ .,QB:FBUL 4<.,QB:FB; QL-1UL> FSSV"L 1UL')J [.L Q.E&20."N0'"#-1'U.L Q.E&40."N1U.L' [T Q.E&4/4UT !.P - PRESET! !BEGIN REDISPLAY CALC ALL REGISTERS ARE SET UP! Q.C"EQC"N FT\'' -1F[NOQUITW 1:< Q.P"G (Q.E&2000."N1'"#0'#QT)"N QB-QE"E FT 0T 0;''' QC-2"E 0;' QC-1"E QL"G (Q.E&100."N1'"#0'#QT)"N QB,QEFT' 0;' QB,QEFT 0;' QC-3"E QL"N Q.L(QL+1)(Q.C-3)"E Q.D"G QD"G QB,QET 0;'' Q.D"E QD"E FT  0T:T :FUBW -1F[^HP OCROCK''' QD"G FT!'"#FT^' QL"L FT[ .(10:<1AF ; ; 1T C>"LFTE-O-B')J FT] 0;' (Q.E&400."N1'"#0'#QT)"N FT  0T 13,1A-13"E 0;'' (Q.E&10000."N1'"#0'#QT)"N T :F-ZU.RWQ.R"E FT  ' 0T '0;' QD"G QB,QET 0;' Q.C"E FT  0T QEUB ' -1F[^HP (Q.C-3)Q.DQ.L"N !CROCK! !FT_!FSECHODWDFSECHOD' QBJFSHPOS-(QEJFSHPOS) F]^HPW 0;' QC"E Q.C"N FT\' QL"G (Q.E&200."N1'"#0'#QT)"N QB,QEFT' 0;' QL"L QB,QEFT 0;' QD"E QBJ 0;' QB,QET 0;'>F"L-@FEQIT"E @FG F+'"# FG'' F]NOQUITW QEJ QC"E QB,QEFK' 0U.P QC-2"N B,BX.T .FSPUSHPT' QL"L-UL' Q.E&(-64)QC(10.*QD)(20.*(QL+1))U.E QC-2"EQ.E(4*QT)U.E'   !page! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; STRING COMMANDS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <=> 400MINTERNSAFETY COUNT 0MINTERNSAFETY FILE 0MINTERNSAFETY DEFAULT *BUFNAME*<=MAIN *SAFETY STD*<= F[B BIND IDSK: FSMSNAMEF6 I;_ FSUNAMEF6 I  .[3 GBUFNAME Q3J ]3 HXSAFETY FILE F]B BIND 0USAFETY DEFAULT *SAFETY FN1*<= 1M.XType Fn2:  FQ.S"L' :I*.SF(USAFETY FILE)USAFETY DEFAULT *SAFETY >*<= :I*>F(USAFETY FILE)USAFETY DEFAULT *SAFETY SINGLE*<= F[B BIND IDSK: FSMSNAMEF6 I;_ FSUNAMEF6 I  FSJNAMEF6 HXSAFETY FILE QSAFETY FILEUSAFETY DEFAULT F]B BIND *Check Safety File*<= f[dfile qsafety file[1 1: ! find beginning of file name ! r munstruc ! get file name into c ! 1:"N 0ue' ]..o qdfsbkill qb-qe"G 1m.vReload safety file for c? (Space = yes)  :fi-32"e fiw 1,q1mbrest w(fsdfile),-2fsqpslot '"# :fi-127"e fiw''' ]e ]d ]c ]b ]a>"N ]1 f]dfile 0fsmodified' "# ]1 f]dfile et..u' *COMPILE*<=1,1M.L h@v 3u.q <=>[1[2 12:I1 127:i2 :@I*| j2:s!COMPILED!"e ' b,.kk j j j2; r4d > zj 1<-s;c.,zk > j h@v 3u.q|minterndecompileminternuncompilew ]2]1 !page! this code loads a compiled or "english" file *load macro file*,*load macro library*<= f[dfilew er f[bbindw 14fy j4,14f~!compiled!"e :ej[1 q1m1 '"# er@y 1:w '  *teco 514*<=[1[2[3  *srch mode*<=.?! +~srch .D~*<=fg +~srch .U~*<=fg +~srch either~*<=[.2 1M.Y+0"E :I.2.T1 .2"L Q.2U.T'' 1m.y"g1'"#-1'u.2 .u.b qsrch modef[sstring q.2@f l q.2"lr' 1m.y:s  q.2"lfkc @f l' q.b,.(q.bj)f  +~srch fwd~*<= .u.b qsrch modef[sstring 1@f l 1m.y:s  q.b,.(q.bj)f  *view qvector*,*vq*<= [1[2[3 1m.vVector m.u q.ru.s 0,0u1u2 q.rfp-1"nfg' f[bbind :@i.r\g:.r(%1)\ q.su3 q:3(0)u3 fq.s/5-1/2:<%2\ i * m.r i*<=  !>! q3-1< m.r 15.i12.i> >w m.cqvector .s f]bbindw h@v 3u.q *delimit here to*<=@:I*| 1:<.u.b @:fU..Iw :I.TQ.B,Q..I>,2M.Z |  !page! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; abbreviation package ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <=>5fsqvectoru..y 2u:..y(0) This code is incorrect if = is not present "(r-:@fwr ...)" is wrong +~make abbreviation~*,...A<= Tm.v Lm.xLet  fq.s"l ' f[bbindw g.sj f[sstring :@fwr .[1 :s="ezj' .(r-:@fwr q1,.x1)j :@fwr .,zx*[3 q..y[..o :fo..o1[2 q2"g f~:..o(q2)1"n -q2u2'' q2"l-5*q2j .(0fsword*5,0i)j q1,.fswordw'"#q2*5j' fq3"n q3,.+5fsword'"#0fsword*5d'  +~lookup abbreviation~*,\<=s 0[1[2 1:< .u.b 1u.q ."e i\ 0;' 1:<-@fwr>"e 1af="e .(-:@fwr .u2 ."g -@fwx1 ')+1j' .,q.bx.s fq.s-100"g -1u.r '"# :fo..y.su.r ' q.r"g f~:..y(q.r).s"n -q.ru.r'' fq1"g q..y[..o q.r"l-5*q.rj .(0fsword*5,0i)j q.s,.fswordw' "#q.r*5j' q1,.+5fswordw ]..o q2j 0u.q 0;' q.r"l q.bj i\'"# fq.sd .u..i .u.b g:..y(q.r+1) q.m&1000."n fshpos-(fsadline)f"g-1u.r q.rr .-(-s   .)-1+q.ru.r fq.h"l '"# 15.i 12.i g.h q.rc''' ' ' "# q.bj i\'>,q.qm.z  *load abbreviations*,*la*<= 1:< Cm.vI/O  m.oLoad Abbreviations fq.s"l 0;' mload file abbreviations.s >,3m.z  *load file abbreviations*<= f[dfile er [4 f[bbind @y [1 [2 [3 q..ou4 <.-z; :@fwr .u1 :f:fb="e:l' .(r-:@fwr q1,.x1)j :@fwr :x3 q..yu..o :fo..o1[2 q2"g f~:..o(q2)1"n -q2u2'' q2"l-5*q2j .(0fsword*5,0i)j q1,.fswordw'"#q2*5j' q3,.+5fsword q4u..o l>  *dump abbreviations*,*da*<= 1:< Cm.vI/O  -1m.oDump Abbreviations fq.s"l 0;' f[dfile et.s f[bbind 0[1 fq..y-5/10< g:..y(%1) i =  g:..y(%1) i  > ew hpwef >,3m.z  *view abbreviations*,*va*<=[1[2 0,0u1u2 f[bbind :@i.r\g:..y(%1)\ fq..y/5-1/2:<2,%2\ i  m.r i  m.r 15.i12.i>w m.cqvector ..y f]bbindw h@v 3u.q !PAGE! *BSAVE*<= .[0 [1 F[DFILE F[BBIND I G0 32I !.! g(q.M&777757777777.) 32I !MODE LINE turn off window bit! GMETA .M 32I !META-MODE LINE! G...T 32I !MARK! FSADLINE\ 32I !LINE LENGTH! FSFILEPADI 32I !FILE PADDING! FSDFILEMSTR !FILE DEFAULT! QSAFETY FILEMSTR !SAFETY FILE NAME! Q..S MSTR !SEARCH DEFAULT! Q.H MSTR !PREFIX! Q:CURBUF(9) MSTR !Buffer name! QSAFETY FILEU1 ET1 U1 ET1EW HPW !WRITE OUT ALL THIS CRAP! F]BBIND 0,FSZPWEF !WRITE OUT BUFFER! 0FSXMODIFIED  *STR*<= [B FQB[A 127I (QA&127)I (QA/128)UA (QA&127)I (QA/128)UA (QA&127)I GB  *BREST*<=p !1 ARG-->READ INTO GENERATED BUFFER, 2-->USE CURRENT BUFFER! MBUFDUMP !SAVE CURRENT BUFFER! [B [A [1 F[BBIND F[DFILE QSAFETY FILEU1 ET1 .UB U1 ET11:F"L FE QB,.FXB M.VB ' FSIFCDATEUB !SAVE FILE CREATION DATE! ^Y 0J !READ STUFF IN! F]DFILE 0FSWORD+2"N :I*BSF Save file in bad formatFSERR ' 5J \[1 C !THIS WILL BE ., EVENTUALLY! \[1 C !MODE WORD! \[1 C !META-MODE WORD! \[1 C !MARK! \[1 C !ADLINE! 1A[1 2C !FILEPAD! MUNSTR ETA QAU..U MUNSTR USAFETY FILE MUNSTR U..S MUNSTR U.H MUNSTR 0,.K Q1FSFILEPAD ]1 Q1FSADLINE ]1 Q1U...T ]1 Q1UMETA .M ]1 Q1U.M ]1 !NOW THAT THE FILE IS KNOWN TO BE REALLY WINNING, WE CAN SET THINGS! FF-1"N ]A]A !SEE HOW MANY ARGS! QAFSBKILL !WE POPPED OLD CURRENT BUFFER INTO A! MBUFDUMP !STUFF NEW BUFFER OUT! Q1J ]1 ' "# !NEED TO MAKE NEW NAME IN A! F[BBIND GA J "N 0;' I/> F]BBIND ]2 !POP OLD BUFFER! [2 [3 (5*16)FSQVECTORU2 Q.SU:2(9) Q.SUBUFNAME 3MGet Buffer name FS^RMDLYFS^RMCNT -1U:2(11) QCURBUFU3 QCURBUFU:2(10) Q2U:3(10) Q2UCURBUF MBUFDUMP M.D ]3 ]2 Q1J ]1' 1:"N -1fsmodified' "# FSIFCDATEUA EC !GET CREATION DATE OF FILE DEFAULT! QA-QB"G M.VThis is not the most recent version of the file.' "# -1fsmodified' ' et..u  *UNSTR*<= 1A-127"N MBUFLOAD :I*BSF Save file in bad formatFSERR ' 4C .[0 (0A*16384)+(-1A*128)+(-2A)[1 Q0+Q1J Q0,.XA ]1 ]0 QA *SAVE BUFFER*<= [1 F[DFILE QSAFETY FILEU1 ET1 16FSECHODISP 67FSECHODISP !CLEAR ECHO AREA! -1M.OSave to F]DFILE FQ.S"L M.VAbort ' "# Q.SMBSAVE ' *RESTORE BUFFER*<= [1 F[DFILE QSAFETY FILEU1 ET1 16FSECHODISP 67FSECHODISP M.ORestore file F]DFILE FQ.S"L M.VAbort ' "# Q.SMBREST H ' *Format Directory*<=EM *Initial Default*<=OMAIL > *Tailor File*<= [0 FSXUNAME:F6U0 E?0 RMODE"N E?MYMODE >"N E?0;0 RMODE"N E?MYMODE >"N 0 '''' ER -1 *Rmode Directory*<=.TECO. *Process JCL*<=FJ CASE SHIFT MACRO *Case*<=.u.b FQ.T"N 0$ '"# (fs case"l 1f$^@ '"# -1f$/^') ' H@V 3M.Z ...<=^FT .=.^:=^ft/Z^= *PAGE*<= 1:<.U.B [0[1 .TFU1 12:I*F[S STRING Q1"E S 0; ' Q1-1"E J (.T-1)S 0; ' Q1-2:"L J .TU0U1W (Q1-1)S Q0L 0; ' >,3M.Z TOGGLE TRACE MODE ...]<=FSTRACE"E1'"#0'FSTRACE COUNT THINGS ..C,*Count*<= [1 .[2 :1<1M.XCount:  FQ.S"L 0;' 0S.S FQ.T"E HU.RU.B O' .TF-3"E 1M.YFU.RU.B O' Q.M&2."N M.YFU.RU.B O' Q.M&4."N M.YFLU.RU.B O' Q.M&40."N M.Y@FLU.RU.B O' Q.M&10."N M.YFWU.RU.B O' q.m&100."n m~srch either~u.ru.b o' Q.M&20."N M.9FU.RU.B ' !! Q.B,Q.RFSBOUND-Z+(Q.M&40000."N -1FSNOQUITW'J 0U1 :<:S;W%1> Z)FSBOUNDW q2j Q1^:= ]2]1 0>,3M.Z COUNT WORDS *words*<=[0 bj 0u0 :<^fwl w%0 w.-z;> wq0^:= ]0  Move point to top of screen. ...^<= 1@:F 0 Idleness-based autosave (only works on ITS for now) <=> 0MINTERNLAST TYI 0MINTERNREALT HITS Automatic Save of Buffer after enough inactivity. *REALTIMER*<= (FSTYICOUNT-QLAST TYI)"E QREALT HITS:"L %REALT HITS-1"G [a [b [c [d [..h 0ud qcurbufua < fsmodified"N fsxmodified"N m..f fsxmodified"E q:curbuf(9)uc qd"N @FT (Saved buffer c)' "# 1ud @FT (Saved buffer c at  400001000000.,fsdate:fsfd convuc @FTc)' ' ' ' mbufdump q:curbuf(10)ub qbucurbuf mbufload qb-qa"E 0;'> qd"N@FT ' ]..h ]d ]c ]b ]a -1UREALT HITS ' ' ' "# 0UREALT HITS (FSTYICOUNT)ULAST TYI ' *TIMED SAVE*<= FSCLKMACRO"N 0FSCLKMACRO ' (F"G'"#10'*60*60)FSCLK INTERVAL (QREALTIMER)FSCLKMACRO 00