H [0+8+FQ(+4)[1 0FO10F"G+Q1' +FQ()+4U1 FQ1"L0' ,Q1:M(Q1+4(]1]0)) }}++Z0$w'&!3Q-6)(5 (\*{%+3(@E&S3a3Eo*})Y&)RT&!(cc(@&hr3313'TzNQ k }SJ14[ 55!;.[!95DQ777hl7y#A%{?$a+u5}uL#BFWLFVG`DjDltD)~H_ G EP E &E< 0F< :Fs DEW PD ZHX dHC nF_ xE D E -D) !EE WEW 6D G KH G `D 9M ; 9h ? %? gG A@ QA? cAf o?L ~Hk H| Gq /B5 {@@ A J kJb K* C 3>,A_<<^ ;? >t =Lc9?m9:tO# Tdebug .# Tdebug =# Tdebug ?# Tdebug A# Tdebug B# Tdebug D# Tdebug F# Tdebug H# Tdebug L# Tdebug M# Tdebug N# Tdebug Q# Tdebug S# Tdebug Space# Tdebug U# Tdebug V# Tdebug W# Tdebug X# Tdebug \# Tdebug ^# Tdebug ^?# Tdebug ^J# Tdebug ^L# Tdebug ^N# Tdebug ^R# Tdebug ^S# Tdebug ^V# Tdebug ^W# Tdebug ^[& File TDEBUG Loaded& Kill TDEBUG Library& Setup TDEBUG Library& Tdebug Break& Tdebug Breakpoint& Tdebug Describe& Tdebug Display Frame& Tdebug Display Mode Line& Tdebug Enter& Tdebug Error Break& Tdebug Help& Tdebug Insert Object Info& Tdebug Insert QP Slot Info& Tdebug Minibuffer& Tdebug New Frame& Tdebug New Mode Line& Tdebug Qprint Setup& Tdebug Qprint Var Setup& Tdebug Qvector Print& Tdebug Refresh& Tdebug Remove Breakpoints& Tdebug Select WindowBreakDebug ModeList BreakpointsUnbreak~DIRECTORY~~DOC~ # Tdebug .~DOC~ # Tdebug =~DOC~ # Tdebug ?~DOC~ # Tdebug A~DOC~ # Tdebug B~DOC~ # Tdebug D~DOC~ # Tdebug F~DOC~ # Tdebug H~DOC~ # Tdebug L~DOC~ # Tdebug M~DOC~ # Tdebug N~DOC~ # Tdebug Q~DOC~ # Tdebug S~DOC~ # Tdebug Space~DOC~ # Tdebug U~DOC~ # Tdebug V~DOC~ # Tdebug W~DOC~ # Tdebug X~DOC~ # Tdebug \~DOC~ # Tdebug ^~DOC~ # Tdebug ^?~DOC~ # Tdebug ^J~DOC~ # Tdebug ^L~DOC~ # Tdebug ^N~DOC~ # Tdebug ^R~DOC~ # Tdebug ^S~DOC~ # Tdebug ^V~DOC~ # Tdebug ^W~DOC~ # Tdebug ^[~DOC~ & File TDEBUG Loaded~DOC~ & Kill TDEBUG Library~DOC~ & Setup TDEBUG Library~DOC~ & Tdebug Break~DOC~ & Tdebug Breakpoint~DOC~ & Tdebug Describe~DOC~ & Tdebug Display Frame~DOC~ & Tdebug Display Mode Line~DOC~ & Tdebug Enter~DOC~ & Tdebug Error Break~DOC~ & Tdebug Help~DOC~ & Tdebug Insert Object Info~DOC~ & Tdebug Insert QP Slot Info~DOC~ & Tdebug Minibuffer~DOC~ & Tdebug New Frame~DOC~ & Tdebug New Mode Line~DOC~ & Tdebug Qprint Setup~DOC~ & Tdebug Qprint Var Setup~DOC~ & Tdebug Qvector Print~DOC~ & Tdebug Refresh~DOC~ & Tdebug Remove Breakpoints~DOC~ & Tdebug Select Window~DOC~ Break~DOC~ Debug Mode~DOC~ List Breakpoints~DOC~ Unbreak~DOC~ ~FILENAME~~FILENAME~~INVERT~WFSLINESF"EWFSHEIGHT-(FSECHOLINES)-4'[0 FF"N'"#Q0-1/2'M.VTdebug Window 1 Size Q0-QTdebug Window 1 SizeM.VTdebug Window 2 Size @:I*|W0F[STEPMACRO.M|U.M @:I*|W0F[STEPMACRO.V|U.V @:I*|W0F[STEPMACRO..P|U..P @:I*|WM|UM 0M.VTdebug Proceed Count 0M.VTdebug Break PC 0M.VTdebug Backtrace Level 0M.VTdebug Arg 0M.VTdebugged Buffer 0M.VTdebug Ref Count 0M.VTdebug Saved FS LINES 0M.VTdebug Silent 0M.VTdebug Function Base 0M.VTdebug Q Base 0M.VTdebug Q Top 0M.VTdebug Whole Stack 0M.VTdebug Function Frame 1M.VTdebug Verbose 0M.VTdebug Info Line :I*M.VTdebug Prev Command m.mBacktracem.vOld Backtrace M.M& Tdebug Error BreakM.VMM Backtrace 5FSQVECTORU0 Q0M.VTdebug Break Table 3U:0(0) FSBCONSM.VTdebugger Previous Display FSBCONSM.VTdebugger Function Display M(M.M& Tdebug Qprint Setup) M.M& Tdebug MinibufferU... M(0FO..QTDEBUG Setup HookF"EW@:I*//')qOld BacktraceuMM Backtrace F:M(M.M& Tdebug Minibuffer):I*[0 M.M0[1 Q1M(M.M& Macro Name)U0 QTdebug Break Table[3 :FO30[2 Q2"LQ3[..Q M.V0 ]..Q :FO30U2' "#Q1-Q:3(Q2+2)"E'' Q1M.VMM 0 Q1U:3(Q2+1)' :@I*/MM& Tdebug Breakpoint 1/F(UMM 0)U:3(Q2+2) "EM(0FO..QTdebug Break HookF"EW@:I*//')' :I*[0 FQ0"E:M(M.M& Tdebug Remove Breakpoints)' M.M0[1 Q1M(M.M& Macro Name)U0 QTdebug Break Table[3 :FO30[2 Q2"L:I*MNB Function Not BreakpointedFSERR' QMM 0-Q:3(Q2+2)"N :I*MHC Function Has ChangedFSERR' Q:3(Q2+1)UMM 0 Q3[..O Q2*5J15D]..O "EM(0FO..QTdebug Break HookF"EW@:I*//')'QTdebug Break Table[0 1[1 [2 (FQ0)/15< Q:0(Q1)U2 QMM 2-Q:0(Q1+2)"E Q:0(Q1+1)UMM 2' Q1+3U1> Q0[..O5JZK "EM(0FO..QTdebug Break HookF"EW@:I*//')':FT---Breakpoints---  QTdebug Break Table[0 1[1 [2 (FQ0)/15< Q:0(Q1)U2 FT2  Q1+3U1> W0F[STEPMACRO M(M.M& Tdebug Enter) M.M& Tdebug BreakFSSTEPMACRO-:M(FSSTEPMACRO)W0F[STEPMACRO M(M.M& Tdebug Enter) DFSREREAD M.M& Tdebug BreakFSSTEPMACRO-:M(FSSTEPMACRO)W0F[STEPMACRO FQ(-FSBACKSTRING)"L' "L' "#FSSTEPDEPTH"L %Tdebug Proceed Count"L'' "#FSSTEPDEPTH-(FSBACKDEPTH-1)"E -FSBACKPC-QTdebug Break PC-1"L' %Tdebug Proceed Count"L'''' Q..OUTdebugged Buffer QTdebugger Function Display[..O FSQPPTR-2UTdebug Q Top F[SSTRINGF[INSLEN F[DFILE QTdebug Silent"E QTdebugged Buffer[..O@V]..O' @FN|1M(M.M& Tdebug Select Window)| 2M(M.M& Tdebug Select Window) FSBACKDEPTH-1UTdebug Backtrace Level !Newframe! M(M.M& Tdebug New Frame) M(M.M& Tdebug Display Frame) !Iread! 0UTdebug Arg !Read! [0 M.M& Tdebug HelpF[HELPMAC <.@V :FI:FCU0 @FI@FS^RCMAC-(33.FS^RINIT)"EXU0' Q0-0+1"GQ0-9-1"L10*QTdebug Arg+Q0-0UTdebug Arg0U0'' Q0-40."E:I*SpaceU00;' Q0"NQ0-40."LQ0#100.U0 :I0^0' "#Q0-177."E:I0^?' "#Q0:I0'' 0;'> F]HELPMAC 1,M.M# TDebug 0U0 Q0"E]0FGOREAD' QTdebug ArgF"E+1'M(Q0(]0))[0 ODisp 0 !Disp Newframe!]0ONewframe !Disp Iread!]0OIread !Disp 1Proc!  !Disp Quit! 0,-7FSQPSLOT FS^RTHROW !Disp Exit! 0,-7FSQPSLOT 0UTdebug Function Frame HK[3 QTdebug Whole Stack"N -1[0 FSBACKDEPTH[1' "#QTdebug Function Base[0 FSBACKDEPTH-1[1' "E 0fo..qTdebug New Frame Hooku0 q0"nm0' 1UTdebug Function Frame' ' "#:FTAlready at top of stack  Q1-1UTdebug Backtrace Level'' "#:FTAlready at bottom of stack  Q0+1UTdebug Backtrace Level' > p[0 0,0A-15."E0,1A-12."EC'' M(M.M& Tdebug New Mode Line)U0 F=Tdebug Info Line0"N Q0UTdebug Info Line M(M.M& Tdebug Display Mode Line)' QTdebugger Previous DisplayU0 HF=0"E .@V' "#@V H(Q0[..OHK)G(-FSQPSLOT)]..O' [3[1[4 QTdebug Function Frame"N QTdebug Backtrace LevelU1 Q1FSBACKSTRINGU4 Q4M(M.M& Macro Name)F"NU4' "#W:I4**STRING**' FSBACKDEPTH-3[2 QTdebug Whole Stack"E QTdebug Function BaseU3 Q1-Q3U1 Q2-Q3U2' Q1:\U1 Q2:\U2 :I3--Function Level 1/2' "#:I3' QTdebug Ref Count:\U1 :I*1 Tdebug Breakpoint3 Function Name: 4[..H QTdebug Info Line[0 QTDEBUG Window 1 Size+1F[TOPLINE 2F[LINES :FT0"G 0+[N3-[O FSWINDOWUTDEBUG Window o Window QTDEBUG Window n WindowFSWINDOW -1F"NWQTDEBUG Window 1 Size+4'FSTOPLINE QTDEBUG Window n SizeFSLINES ' "E0F[TOPLINEW0F[LINESW0F[REFRESHW' "#0FSTOPLINEQTDEBUG Window 1 SizeFSLINESF+ F]REFRESHF]LINESF]TOPLINE M(FSREFRESH)'[Tdebug Ref Count %Tdebug Ref Count @FN|WFW| FSWINDOWM.VTDEBUG Window 1 Window -1M.VTDEBUG Window 2 Window F[LINESF[TopLine M.M& Tdebug RefreshF[REFRESH :I* UTdebug Info Line 0UTdebug Silent Q..OUTdebugged Buffer M.M& Tdebug Select Window QTdebugger Function Display[..OHK]..O 1MW M(FSREFRESH) -1UTdebug Proceed Count 0UTdebug Break PC -1FSSTEPDEPTH 0UTdebug Function Base 0UTdebug Q Base 0UTdebug Whole StackvM.M^R Pop Minibuffer Ring[...Y Q..O,(F[BBIND FF"NG(QTdebug Prev Command)' )M(M.M& Minibuffer)Step Minibuffer H"E0' F=(Q:.N(0)F"EW:I*')..O"N Q.N[..OZJ-5D J5,0I]..O HX:.N(0)' F]BBIND]...Y M(M.M& Tdebug Enter) FSQPPTR+1UTdebug Q Base FSBACKDEPTHUTdebug Function Base Q:.N(0)UTdebug Prev Command M.M& Tdebug BreakF[STEPMACROM:.N(0)0F[REFRESH FSTOPLINE"N QTDEBUG Window 1 SizeF[LINES0F[TOPLINE QTdebugged Buffer[..O QTDEBUG Window 1 WindowF[WINDOW QTdebug Silent"E0U..H@V'' "# QTDEBUG Window 2 SizeF[LINESQTDEBUG Window 1 Size+1F[TOPLINE QTdebugger Function Display[..O QTDEBUG Window 2 WindowF[WINDOW 0U..H@V' FSLISTEN"N-1FSPJATY' 4FSLINES QTDEBUG Window 1 SizeFSTOPLINE :FTFSWIDTH/10 QTdebug Info Line[0 FT 0  FSWIDTH/10,4FU00U..H10000[Tdebug Qprint Lines 40[Tdebug Qprint Length F[BBIND QTdebug Function Frame"E INo Function Frame ' "#QTdebug Backtrace LevelFSBACKARGSF([2[1)F[3 Q3"EINo Arguments  :FTHT:I*Iread' M.M& Tdebug Insert Object Info[0 I:  Q3&2"NQ1M0'"#I' I :  Q3&1"NQ2M0'"#I' I ' :FTHT :I*IreadQTdebug Backtrace Level-UTdebug Backtrace Level :I*NewframeQTdebug Backtrace Level+UTdebug Backtrace Level :I*Newframe0F[^RENTER :I*[Function Frame][..J 0[..F. :I*Iread1M(M.M& Tdebug Select Window) QTdebugged Buffer[..O 0F[^RENTER:I*[Buffer][..J .]..JF]^RENTER]..O 2M(M.M& Tdebug Select Window) :I*Iread[..J 1M(M.M& Tdebug Select Window) QTdebugged Buffer[..O M(M.M^R Execute Mini) @V ]..O2M(M.M& Tdebug Select Window) :I*Iread[..J M(M.M^R Execute Mini) @V:I*IreadM(FSREFRESH) :I*Iread-UTdebug Proceed Count -FSSTEPDEPTH :I*1Proc.UTdebug Break PC -UTdebug Proceed Count QTdebug Backtrace LevelFSSTEPDEPTH :I*1ProcQTdebug Backtrace Level-[0 Q0"L:I*Exit' Q0FSSTEPDEPTH Q0FSBACKPCUTdebug Break PC -1UTdebug Proceed Count :I*1Proc:I*Iread0[10[2 QTdebug Backtrace LevelFSBACKARGSF(F[0 )F(Q0-1"E)F(U2' )F(Q0-2"E)F(0U2U1' )F(Q0-3"E)U2U1'"#)W' 1M(M.M& Tdebug Select Window) F[BBIND 0F[^RENTER:I*[Hackery Buffer][..J ]..JF]^RENTERF]BBIND QTdebug Silent"EQTdebugged Buffer[..O@V]..O' 2M(M.M& Tdebug Select Window) :I*Iread:I*Exit:i*Quit[1 <1M(M.M& Tdebug Select Window) QTdebugged Buffer[..O@V]..O @FIU1 2M(M.M& Tdebug Select Window) @V Q1-."NQ1FSREREADW :I*Iread' :FI-."N:I*Iread' FIW> @FT @:= :I*IreadQTdebug Whole Stack"E QTdebug Q Top-QTdebug Q Base[0 QTdebug Q Base+-1[1' "# FSQPPTR[0 [1' F[BBIND IOf G0I slots:  -Q0"GIQP Slot G()I is out of range. '"#ISlot G()I home is  G(Q1FSQPHOME) QTdebug Verbose"E Q1M(M.M& Tdebug Insert QP Slot Info)' "#I 10000[Tdebug Qprint Lines 40[Tdebug Qprint Length Q1FSQPSLOTM(M.M& Tdebug Insert Object Info)'' :FTHT :I*IreadQTdebug Whole Stack"E QTdebug Q Top-1[1 QTdebug Q Top-QTdebug Q Base[2' "#FSQPPTR[1 Q1[2' -1"G'"#Q2'[0 Q2-Q0"LQ2U0' M.M& Tdebug Insert QP Slot Info M.M& Tdebug Select Window0MW F[BBIND Q0 HV:FI-40."EFI' F]BBIND-MW ]W :I*Ireadv[1[2[30[4 I   Q1FSQPSLOTU3Q3FPU2 Q2+4"EInumber=G3' Q2+3"EI[pure string space number]= 8[..EG3]..E I.' Q2+2"EI[impure string space number]= 8[..EG3]..E I.' Q2+1"EI[dead buffer]' Q2"EI[buffer], length= G(FQ3)1U4' Q2-1"EI[Q-vector], length= G(FQ3/5) I wds, #wds/entry= G:3(0)' Q2-100"EI[purstr], length= G(FQ3)1U4' Q2-101"EI[string], length= G(FQ3)1U4' Q4"N I:  .F[VBZ-.F[VZ FQ3-20"G 0,20G3J :L.,ZK I ...' "#G3J:L Z-.F"GDI ...'W' F]VZF]VB' I  FTYou are in a Teco Breakpoint running  M(M.MDescribe)& Tdebug Break FTAnother ? will enter documentation mode, which will exit. :FI-?"EFIWM(M.M& Tdebug Describe)' :I*Iread[0F+ <:FTType a debug command to describe (or "*" for list): FI:FCU0 Q0-*"E0M(M.M& Tdebug Select Window) :FT --Debug Brkpt Commands-- M(M.M& Get Library Pointer)TDEBUGU0 Q0M(M.M& List One File)# Tdebug C :FVFIW -M(M.M& Tdebug Select Window) ' Q0-40."EF+' Q0-40."LQ0#100.U0:I0^0' "#Q0-177."E:I0^?' "#Q0:I0'' FT 0  1,M.M~DOC~ # TDebug 0U0 Q0"E:FVis not defined.' "#:FV0' >1UTdebug Silent :I*Iread0UTdebug Silent :I*IreadQTdebug VerboseF"EW2'-1UTdebug Verbose :I*IreadQTdebug Whole StackF"EW2'-1UTdebug Whole Stack M(M.M& Tdebug New Mode Line) :I*Newframe:I*[.9 :I*View Q Register:[..0 1:"NFQ.9"EF[BBIND'"#HK' IQ Register .9 does not exist. ' :FTHT :I*IreadM(M.M& Tdebug Describe) @V[2 0[3 Q2FP[1 Q1+4"EI[Number]=G2' Q1+3"EI[Pure String Number]= 8[..EG2]..EI.' Q1+2"EI[Impure String Number]= 8[..EG2]..EI.' Q1+1"EI[Dead Buffer]' Q1"EI[Buffer] Length= G(FQ2)Q2U3' Q1-1"EI[Qvector] Length= G(FQ2/5) +1,Q2M(M.M& Tdebug Qvector Print)' Q1-100"EI[Pure String] Name:  G(Q2M(M.M& Macro Name))' Q1-101"EI[String] Length= G(FQ2)Q2U3' Q3"N I:  .F[VBZ-.F[VZ FQ2-QTdebug Qprint Length"G 0,QTdebug Qprint LengthG2J :L.,ZK I ...' "#G3J:L Z-.F"GDI ...'W' F]VZF]VB' I  M.M& Tdebug Qprint Var Setup 20MSTdebug Qprint Length 5MSTdebug Qprint Depth 5MSTdebug Qprint Lines @:I*/ /MSTdebug Qprint Indention ]S:I*[0 0FO..Q0"EM.V0' ]0QTdebug Qprint Depth"E  ISlot G0I  +1,Q:()(Q0)M(M.M& Tdebug Insert Object Info) %0> Q1-QTdebug Qprint Lines"G Window 1; 2->Window 2; 0->Bind to full screen; -1->Unbind full screenS Enter Debugger subroutine. Sets up the two window mode, and prepares to be in Debug Break points.S Usual Minibuffer, except it is stepped. Reads and executes teco commands. Uses the Minibuffer to read the commands. Pushes the command string onto a ring buffer in Q.N. An explicit argument initializes the minibuffer with the command last debugged. Once inside the minibuffer, C-M-Y pops to previous saved minibuffer commands, going around the ring.~S Debug refresh subroutine. Redisplays the users buffer in the top window, and the debugging buffer in the lower window.C Print the arguments for the current stack frameC Go Down the stack, to earlier invocationsC Go Up the stack to more recent invocationsC Call ^R on current function frameC Call ^R on bufferC Altmode - Run Minibuffer on The BufferC Run Minibuffer on the function frameC Clear screenC Single proceed to next lineC Proceed to next line at this levelC Exit levels (Actually, like D N)C Rubout flushes argvC Select empty buffer/window for editing/patching Q0,Q1,Q2 are bound to nargs, first, and second arg respectivelyC Exit - like DDTs $PC Quit - Abort all functions currently in progressC Move cursor to other windowC Print numeric argC Print home for QP slot C Print homes for all qp slots, from last down. Arg is number of slots to display, defaulting to allS Insert ... for slot Argument is the slot numberC Print Help message and documentationS Debug mode command documentationC Causes the users buffer to not be redisplayedC Causes the users buffer to be redisplayedC Toggles full display of Q vectorsC Toggles display the whole stack modeC Displays a Q register's contentsS Gives help key documentationS Inserts object's description into the buffer Given an object as the argument, it inserts a description of the object into the buffer. It uses one variable, Tdebug Qprint length, to determine the maximum length to insert. Tdebug Qprint depth is used to determine how deep to print Q vectors for. Tdebug Qprint lines is used to determine how many lines of a Q vector to print. First Argument is level of indention.S Setups variables used by QprintS Initializes a variable If the string argument is already defined, do nothing. Otherwise initialize that variable to the numeric argumentS Prints a Qvector If the depth is 0 just print ... else print the Q vector recursively, printing Tdebug Qprint Lines number of lines. First argument is current indention level, second is the q vector& File TDEBUG Loaded & Setup TDEBUG Library & Kill TDEBUG Library Debug Mode Break Unbreak & Tdebug Remove Breakpoints List Breakpoints & Tdebug Breakpoint & Tdebug Error Break & Tdebug Break & Tdebug New Frame & Tdebug Display Frame & Tdebug New Mode Line & Tdebug Display Mode Line & Tdebug Select Window & Tdebug Enter & Tdebug Minibuffer & Tdebug Refresh # Tdebug A # Tdebug D # Tdebug ^J # Tdebug U # Tdebug ^ # Tdebug ^R # Tdebug B # Tdebug ^[ # Tdebug M # Tdebug ^L # Tdebug ^N # Tdebug Space # Tdebug N # Tdebug L # Tdebug ^? # Tdebug \ # Tdebug X # Tdebug Q # Tdebug . # Tdebug = # Tdebug S # Tdebug H & Tdebug Insert QP Slot Info # Tdebug ? & Tdebug Describe # Tdebug ^S # Tdebug ^W # Tdebug ^V # Tdebug F # Tdebug W # Tdebug V & Tdebug Help & Tdebug Insert Object Info & Tdebug Qprint Setup & Tdebug Qprint Var Setup & Tdebug Qvector Print +8+fq(+4)[20[3 <%3,-q2f2u3q3&1@;q3"l0'> f[BBindq3-1*5,q3*5g2q:..o(0)+q2