!Trace file decoder.  This is the original (non-JHB) version

include  "SYSTEM:CONFIG.INC"
include  "Inc:UTIL.IMP"

constinteger  trace in length = 23

recordformat  trace fm(integer  context, inout, string (55) text)
recordformat  tbuff fm(integer  q,
                       record (trace fm)array  t(0 : tbuffs),
                       integer  p)
constinteger  trace in  = 0
constinteger  trace out = 1

begin 
   record (tbuff fm)name  tbuff
   record (trace fm)name  t
   integer  s, l, i, context
   string (127) command = ""
      on  9 start ;  stop ;  finish 
      connect file("$:TRACE", 0, s, l)
      tbuff == record(s)
      ! printstring("Pointer p at ");  write(tbuff_p, 0);  newline
      ! printstring("Pointer q at ");  write(tbuff_q, 0);  newline
!      prompt("Context: ");  read(context)
      context = stoi(cliparam)
      for  i = tbuff_p, 1, tbuffs + tbuff_q cycle 
         t == tbuff_t(i & tbuffs)
         ! printstring("Slot ");  write(i & tbuffs, 0)
         ! printstring(": context ");  write(t_context, 0)
         ! newline
         if  t_context = context start 
            if  t_inout = trace in start 
               if  command # "" start 
                  spaces(trace in length - length(command))
                  printstring(command)
                  printstring(" / *** No reply ***")
                  newline
               finish 
               command = t_text
            else 
               command = "..." if  command = ""
               spaces(trace in length - length(command))
               printstring(command)
               printstring(" / ")
               printstring(t_text)
               newline
               command = ""
            finish 
         finish 
      repeat 
      if  command # "" start 
         spaces(trace in length - length(command))
         printstring(command)
         printstring(" / *** No reply ***")
         newline
      finish 
end  of  program