p[0 +8+fq(+4)[1 0fo10f"g+q1' +fq()+4u1 fq1"l 0' ,q1:m(q1+4(]1]0))yy"N4C^8s54a 5457)'s&*I'X&*h)(a&*''&*6(aF(a%Yf/>/>-}%/>C,./3{0h12_567D\ + 7#*m#LY$zh#tcHx\U#`,g_]=]N`\CB Q 'O &Q 8O KR R qO Q O (R ;R NY aW W U -W QS 9Z X X Z u_% `- ';o =i -D u: K+ UFb ? AE N"LA19y;HBg& Align Global PL1 Comment Ends& Back Over PL1 Line Comment& Default Init PL1 Mode& Kill PL1 Library& PL1 Cruf Insert Symtab& PL1 Cruf Pass 2& PL1 End Prev Stmt& PL1 Get Statement Label& PL1 Indent After Begin Stmt& PL1 Indent After Compound& PL1 Indent After Do Stmt& PL1 Indent After Else Stmt& PL1 Indent After End Stmt& PL1 Indent After Entry Stmt& PL1 Indent After If Stmt& PL1 Indent After New Block& PL1 Indent After On Stmt& PL1 Indent After Proc Stmt& PL1 Indent After Procedure Stmt& PL1 Indent After Stmt& PL1 Indent Unfin Comp& PL1 Indent Unfin Else Stmt& PL1 Indent Unfin If Stmt& PL1 Indent Unfin On Stmt& PL1 Indent Unfin Stmt& PL1 Last Sub-Stmt Token& PL1 Next Token& PL1 Token Search& PL1 Tokens to Leftp& Setup PL1 Library& Setup/Kill AuxiliaryCref PL1 LabelsCruf PL1 EntriesIndent PL1 RegionPL1 Mode^R End Global PL1 Comment^R Global PL1 Comment^R Indent PL1 Stmt^R Insert PL1 End^R PL1 Indent Relative^R Print Last PL1 Indenter^R Slurp PL1 to Char~DIRECTORY~~DOC~ & Align Global PL1 Comment Ends~DOC~ & Back Over PL1 Line Comment~DOC~ & Default Init PL1 Mode~DOC~ & Kill PL1 Library~DOC~ & PL1 Cruf Insert Symtab~DOC~ & PL1 Cruf Pass 2~DOC~ & PL1 End Prev Stmt~DOC~ & PL1 Get Statement Label~DOC~ & PL1 Indent After Begin Stmt~DOC~ & PL1 Indent After Compound~DOC~ & PL1 Indent After Do Stmt~DOC~ & PL1 Indent After Else Stmt~DOC~ & PL1 Indent After End Stmt~DOC~ & PL1 Indent After Entry Stmt~DOC~ & PL1 Indent After If Stmt~DOC~ & PL1 Indent After New Block~DOC~ & PL1 Indent After On Stmt~DOC~ & PL1 Indent After Proc Stmt~DOC~ & PL1 Indent After Procedure Stmt~DOC~ & PL1 Indent After Stmt~DOC~ & PL1 Indent Unfin Comp~DOC~ & PL1 Indent Unfin Else Stmt~DOC~ & PL1 Indent Unfin If Stmt~DOC~ & PL1 Indent Unfin On Stmt~DOC~ & PL1 Indent Unfin Stmt~DOC~ & PL1 Last Sub-Stmt Token~DOC~ & PL1 Next Token~DOC~ & PL1 Token Search~DOC~ & PL1 Tokens to Leftp~DOC~ & Setup PL1 Library~DOC~ & Setup/Kill Auxiliary~DOC~ Cref PL1 Labels~DOC~ Cruf PL1 Entries~DOC~ Indent PL1 Region~DOC~ PL1 Mode~DOC~ ^R End Global PL1 Comment~DOC~ ^R Global PL1 Comment~DOC~ ^R Indent PL1 Stmt~DOC~ ^R Insert PL1 End~DOC~ ^R PL1 Indent Relative~DOC~ ^R Print Last PL1 Indenter~DOC~ ^R Slurp PL1 to Char~DOC~ ~FILENAME~~FILENAME~~INVERT~PL1qm(m.m & Init Buffer Locals) 1,:i*/* m.LComment Startw 1,:i*/* m.LComment Beginw 1,:I* */M.LComment Endw 1,m.m& Indent Without Tabsm.LMM & Indentw 1,m.m& XIndent Without Tabsm.LMM & XIndentw 1,36m.LCOMMENT COLUMNw 1:"N m(m.m& Default Init PL1 Mode)' m.vPL1IND ..Dw ^:iPL1IND ..D| A A AA A AA AA A A ( ) A A A AA A AA AA AA AA AA AA AA AA AA AA A A A A A A A AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA A A A A AA A AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA A A A A | q.0,1M(M.M& Set Mode Line)PL1 [7[9 f[sstring fsruntimeu7 .u9 fn q9j  zj -s NAMES DECLARED BY EXPLICIT CONTEXT. fkc [1 .u1 [2 :s "N .u2 '"# zu2 ' [0 q..ou0 q1j [..o fsbcreatew [3 q..ou3 [4 [5 q0u..o < .,q2:fb dcl ; \u4 :sref; f> > q3u..o   fwl  l  q0u..o bj q3u..o bj < q3u..o :s ; .-5,.-1x5 4x4 q0u..o :s  5; 0l f4 -l > q3u..o .,((fsruntime)-q7\).fx1 ^ftDone. 1 ms.  [.1[.2[.3[.4 1f[both casew [..d :i..d..d _*5:f..dA [.5 :i.5 [.6 5fs qvectoru.6 2u:.6(0) q..o[.8 fs b createw q..o[.7 g.8 0u.1 q.8u..o bj < 9,%.1\ 40.i l .-z; > q.7u..o bj < 10,40.i l .-z; > q.7u..o bj < :sprocprocedureentry; .u.1 -fwl ^-f  l 0a-:"E r ^-f l -fwx.2 .u.3 0l 9c .( q.8u..o )j -4x.4 q.7u..o :fo.6.2u.3 q.3"L q.6[..o -q.3*5j 10,0i 10r q.2,.fs wordw -q.3+1*5j q.4,.fs wordw ]..o ' fq.5+fq.2+2-160"G q.8 m(m.m& PL1 Cruf Pass 2) :i.5 ' :i.5.5.2 ' q.1j > q.8 m(m.m& PL1 Cruf Pass 2) q.8u..o q.6 m(m.m& PL1 Cruf Insert Symtab) q.7 fs b killw bj [.2[.3[.4[.5 :i*m.vLast PL1 Indenterw .m(m.m& PL1 Tokens to Leftp)"N f^m(m.m^R PL1 Indent Relative) ' ff"G :iLast PL1 Indenter(^R Indent Nested) f^m(m.m^R Indent Nested) ' .[.1 1m(m.m& PL1 End Prev Stmt)u.2 q.2j m(m.m& PL1 Next Token)u.5u.3 q.3-q.1"L q.3,q.5x.4 1:< q.1,q.3m(m.m& PL1 Indent Unfin .4 Stmt)u.3u.1 >"N q.1,q.3m(m.m& PL1 Indent Unfin Stmt)u.3u.1 '' "# .-b"N 1m(m.m& PL1 End Prev Stmt)u.2 q.2j m(m.m& PL1 Next Token)u.5u.3 q.3,q.5x.4' "# bu.3bu.5 :i.4' 1:< q.1,q.3m(m.m& PL1 Indent After .4 Stmt)u.3u.1 >"N q.1,q.3m(m.m& PL1 Indent After Stmt)u.3u.1 '' fsrgetty"n q.1,q.3 ' fsechodis Afsechodis 0t 0,0a- "N 0,0a- "N ^m(m.m ^R Indent PL1 Stmt)f'' .,(iend;).f .: .[.1 fnq.1j 4r [.2 [.4[.5 0[.3 < b-."E FG 1' 1m(m.m& PL1 End Prev Stmt)j m(m.m& PL1 Next Token)u.5u.4 q.4u.2 q.4,q.5f~IF"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~ON"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~ELSE"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~DO"E q.3-1u.3' q.4,q.5f~BEGIN"E q.3-1u.3' q.4,q.5f~PROC"E q.3-1u.3' q.4,q.5f~PROCEDURE"E q.3-1u.3' q.4,q.5f~END"E %.3w' q.3-1:; > q.4,q.5x.4 q.2j .m(m.m& PL1 Get Statement Label)u.3 q.3"E 2f~DO"E fw+.m(m.m& PL1 Next Token)x.3 :i.3.4 .3' "# 5f~BEGIN"N fwx.3 :i.3.3-.4' "# fwx.3''' q.1j i /* .3 */  q.1-fku.1 q.2j 0 ^v *30:w 1 r.[.0 fnq.0j 1m(m.m& PL1 End Prev Stmt)j 1,.m(m.m& PL1 Next Token)[.2[.1 q.2j 0,1a-:"N 0 ' q.1,q.2x* :[.1 .u.2 [.3[.4[.5 q.1,q.2fu.2u.1 q.1j 1[9 q.1,q.2x.5 q.1,q.2m(m.m& Kill Text) g.5 q.1j z-q.2u.2 < 0l m(m.m& PL1 Next Token)u.4u.3 q.3j z-.-q.2:; ^m(m.m^R Delete Horizontal Space)w ^m(m.m^R Indent PL1 Stmt)w l > q.1 z-q.2j q.1,. qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(^R PL1 Indent Relative) [1 ^:I1| qLast PL1 Indenteru.1 :iLast PL1 Indenter.1(^R Tab to Tab Stop) :M(M.M^R Tab to Tab Stop)| 0,1af  +1"G 0,0af  +1"G fs hpos-1( -d)m(m.m& Indent)w '' .[P FSHPOS[0 ^-f  L .[Q FSHPOS[2 0L< B-."E QPJ :m1' -L1A-15."N0;'> Q0"G1:<0,Q0+1:FM>"ER' "#0L1:<0,Q2+1:FM>"ER' "#QPJ:M1''' < F:FB_.,  "E:L'"#R' ^F_.,  R > FSHPOS(QQ,QPK ):M(M.M& Indent)0fo..qGlob of Comments Flag"N f:^m(m.m^R Indent for Comment)' 1m.vGlob of Comments Flagw fn0m.vGlob of Comments Flagw [.1[.2 :i*Global Comment[..j 10[Comment Column :i*/**[Comment Start 1[Space Indent Flag fs qp ptr [Auto Fill Mode m(m.m Auto Fill Mode) :l gComment Start 1m(m.m^R Indent for Comment) .-z"L -l' :l  w 0l :fb/**"L < l :fb/**"E 1;' >' fs z-.f[ vzw m(m.m & Align Global PL1 Comment Ends) zj f] vzw .f[ vbw m(m.m & Align Global PL1 Comment Ends) bj f] vbw qQ fs qp unwindw m(m.m& Process Options) m(m.m& Set Mode Line) [.1[.2[.3 bj < :s/**; fkc 0u.1 0u.2 0u.3 .( < :fb/**; %.3w .-1f  4f=* */"E 1u.2' :fb*/; fs hpos,q.1 f u.1 w l > fs z-.f[ vzw )j q.3-1"E q.2"N -^f   k 51fo..qPL1 Star Line Widthu.1'' q.1-2u.1 q.2"N (q.1-qComment Column-3&1)+q.1u.1' < :s*/; -7f=/* * */"E 2r q.1-(fs hpos)/2 2c ' 2r q.1m(m.m& Indent) f l > zj f] vzw > ^m(m.m^R End Comment) f ff"G .( bj < :s/**; .-1f > )j' fs ^R Exit [.1[.2[.3[.4[.5[.6 m.i fiu.5 z-.u.1 0l ^f   r z-.u.6 0:l z-.u.3 .m(m.m& Back Over PL1 Line Comment)j .u.2 < .,(0l).:fb.5; > .,q.2f( fx.4 ) f z-.-q.3"N ^m(m.m^R Indent for Comment) f' z-q.6j .,(g.4 i ). f 0l ^m(m.m^R Indent PL1 Stmt) f z-q.1j w 1 qLast PL1 Indenter[.0 fs echo displayw Cfs echo displayw ^ft.0 0fs echo activew {qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent After Stmt) u.1 [.2 [.3 q.2-b"E 10u.3 1:' "# q.2j fs hposu.3' q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent After Compound) u.1 [.2 1:"N 0m.vCOMP BLOCK Indentationu.3' q.2j fs hpos[.6 q.2m(m.m& PL1 Last Sub-Stmt Token)[.5[.4 q.4,q.5f~DO"E q.4j fs hpos+q.3u.6' q.4,q.5f~BEGIN"E q.4j fs hpos+q.3u.6' q.1j q.6-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.6m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent After New Block) u.1 [.2 q.2j fwl z-.<1af  "L 1;'c> fs hpos[.3 q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) [.1 [.2 [.3 qLast Pl1 Indenter[.4 :iLast PL1 Indenter.4(& PL1 Indent After Proc Stmt) 10fo..q1st Proc Stmt Indentationu.3 q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent After End Stmt) u.1 [.2 [.4[.5 0[.3 q.2j !Put in sometime search for matching label subr... *! < b-.; 1m(m.m& PL1 End Prev Stmt)j m(m.m& PL1 Next Token)u.5u.4 q.4u.2 q.4,q.5f~IF"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~ON"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~ELSE"E q.4m(m.m& PL1 Last Sub-Stmt Token)u.5u.4' q.4,q.5f~DO"E q.3-1u.3' q.4,q.5f~BEGIN"E q.3-1u.3' q.4,q.5f~PROC"E q.3-1u.3' q.4,q.5f~PROCEDURE"E q.3-1u.3' q.4,q.5f~END"E %.3w' q.3-1:; > q.2j fs hpos[.3 q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent Unfin Stmt) u.1 [.2 [.4 [.3[.5 1:< fo..qUnfin Stmt Indentationu.4 q.2j fs hposu.3 q.3+q.4u.5 >"N q.1j -l q.2-."g 5*.,5*.+1:g..d[.6 5*.:f..d  2:fwl fshposu.5 5*.:f..d.6 ' "# 0u.5'' q.1j 1:< -:ful ^f  jw fs hposu.5 > q.1j q.5-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.5m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent Unfin If Stmt) u.1 [.2 fsqpptr[.0 fsz-q.1f[vzw q.2j .,zm(m.m& PL1 Token Search)THEN"N .,1m(m.m& PL1 Token Search)IF"E q.0 fs qp unwindw q.1,q.2m(m.m& PL1 Indent Unfin Stmt) ' 2r' q.0 fs qp unwindw fs hpos[.3 q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) qLast Pl1 Indenter[.1 :iLast PL1 Indenter.1(& PL1 Indent Unfin Comp) u.1 [.2 [.4[.5 q.2,q.1f[hboundw bm(m.m& PL1 Last Sub-Stmt Token)u.5u.4 q.4j f]hboundw q.4,q.5f~IF"N q.1,q.4m(m.m& PL1 Indent Unfin Stmt) ' q.4j fs hpos[.3 q.1j q.3-(fshpos)-1"L ^m(m.m^R PL1 Indent Relative) ' q.3m(m.m& Indent) .[.1 [.2[.3 qPL1IND ..D[..D ff"G j' z-b"E q.1j z,z ' < :s/*"E zj 0a"B q.1j z,z ' .u.2 -fwl .u.3 1;' 0a-*"E :s*/"E zu.3zu.2 1;' ' "# .-1u.2 r < .-z; 1af "L 1a-("E 1:"N 1;''"# 1;''c> (ff&2)1a-:"N q.2j-fwl .u.3 1;' ' > q.1j q.3,q.2 :i*[.1 .[.2 j 0[.3 qPL1IND ..D[..D f> q.3"E q.2j ' q.3 [.1 .[.2 [.3[.4 q.1j 0l m(m.m& PL1 Next Token)u.4u.3 q.2j q.3-q.1"L 1 ' "# 0 '[.1 .[.2 [.3[.4 q.1j f > q.3,q.4(q.2j) .[.1 < < -:s;*/"E bj 1; ' "# 1a-;"E 1;' -:s/*' > > .(q.1j) .[.1 j .,(0l).:fb/*"E  ' -^f  [.2j .(q.1j) zj 14.i i ENTRY SYMBOL TABLE:  1u.1 :< g:.6(%.1) i  g:.6(%.1-2) i  >w {fq.5"E ' [..o .[.7 [.2[.4 0,fq.5-1 :g.5 u.5 bj < :s.5; r -fwx.2 fo.6.2u.4 0l f.4 l > q.7j @:i*| :i*[1 m.m1m.vMM 1w  |m(m.m& Setup/Kill Auxiliary) m.mKill Variable @:i*| mkMM w |m(m.m& Setup/Kill Auxiliary) [1 m1& PL1 End Prev Stmt m1& PL1 Next Token m1& PL1 Indent After Stmt m1& PL1 Indent After Begin Stmt m1& PL1 Indent After Do Stmt m1& PL1 Indent After End Stmt m1& PL1 Indent Unfin Stmt m1& PL1 Indent Unfin If Stmt m1& PL1 Indent Unfin On Stmt m1& PL1 Indent Unfin Else Stmt m1& PL1 Last Sub-Stmt Token m1& PL1 Indent After If Stmt m1& PL1 Indent After On Stmt m1& PL1 Indent After Else Stmt m1& PL1 Token Search m1& PL1 Indent After Proc Stmt m1& PL1 Indent After Procedure Stmt m1& PL1 Indent After Entry Stmt 1,q1,q.m.Qw)m.Q. 1,m.m^R Indent PL1 Stmtm.QI 1,m.m^R Print Last PL1 Indenterm.Q...? 1,m.m^R Indent for Commentm.Q..; 1,m.m^R End Commentm.Q..\ 1,m.m^R Global PL1 Commentm.Q...; 1,m.m^R End Global PL1 Commentm.Q...\ 1,m.m^R Slurp PL1 To Charm.Q..{ 0fo..qPL1 Auto Fill Default( )m(m.m Auto Fill Mode) 1,1m.LSpace Indent Flagw Package for editing PL1 code (PL1 MODE).C Set up for editing PL1 code. "/* " and " */" become comment delimiters. $PL1IND ..D$ is set up for use by PL1 indent macros. (E.g. no special Lisp characters, and _ is not a break.) Calls user-providable macro, INIT PL1 MODE, which can put pl1 macros into desired qregs. If no macro exits, calls & Default Init PL1 Mode. See the description of that subr for more details on what it does and how to construct your own.C Crefs label references in a PL1 listing in the buffer. The buffer should be a compilation listing. If you just want a listing, not an object segment, try compiling with options -sb -ck. If a statement on a line references more than one label then whichever label is highest alphabetically will be creffed. If you want to cref a source, not a listing, use MM Cruf PL1 Entries.C Hacky creffer for subrs and functions. Does not need a listing, only source. Crefs PROC's, ENTRY's, and PROCEDURE's. They must be of the form: