PROC dum$display_system_task_table, display_system_task_table, disstt (
  display_option, do: key brief, b, full, f = brief
  output, o : file = $output
  status: var of status
  )


  out = $string($value(output)) // '.$eoi'
  crev osv$control_codes_to_quest_mark k=(string, 256) value= '????????????'//..
'???????????????????? !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl'//..
'mnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????'//..
'?????????????????????????????????????????????????'

  chad e=$rma(1400000100(16))
  addr = $mem($sa(osv$system_task_table_ptr) 6)
  next_task = addr
  vn = $strrep(addr 16) // '(16)'
  putl '0System_Task_Table begins at address: '//vn o=$fname(out)

  WHILE NOT $nil_pva(next_task) DO
    addr = next_task
    v = $mem(addr+72, 6)
    next_task = v
    vn = $ms(addr+0, 31)
    vn = $translate(osv$control_codes_to_quest_mark, vn)
    putl ' Task name: '//vn//', definition location = '//$strrep(addr 16)//'(16)' o=$fname(out)

    IF $substr($string($value(display_option)) 1) = 'F' THEN
      v = $mem(addr+31, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   Automatic restart................. '//vn o=$fname(out)

      vn = $ms(addr+32, 31)
      vn = $translate(osv$control_codes_to_quest_mark, vn)
      putl '   Starting procedure................ '//vn o=$fname(out)

      v = $mem(addr+63, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 3 THEN
        vn = 'OSC$TT_IGNORE_OR_PROHIBITED '
      ELSEIF v = 2 THEN
        vn = 'OSC$TT_VOLUNTARY '
      ELSEIF v = 1 THEN
        vn = 'OSC$TT_SIGNAL '
      ELSEIF v = 0 THEN
        vn = 'OSC$TT_TERMINATE '
      IFEND
      putl '   Deactivate_task option............ '//vn o=$fname(out)

      v = $mem(addr+64, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 3 THEN
        vn = 'OSC$TT_IGNORE_OR_PROHIBITED '
      ELSEIF v = 2 THEN
        vn = 'OSC$TT_VOLUNTARY '
      ELSEIF v = 1 THEN
        vn = 'OSC$TT_SIGNAL '
      ELSEIF v = 0 THEN
        vn = 'OSC$TT_TERMINATE '
      IFEND
      putl '   Idle_task option.................. '//vn o=$fname(out)

      v = $mem(addr+65, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   Restart after idle................ '//vn o=$fname(out)

      v = $mem(addr+66, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   SPI identifier specified.......... '//vn o=$fname(out)
      IF v = 1 THEN
        v = $mem(addr+67, 1)
        vn = $strrep(v, 16) // '(16)'
        putl '    SPI identifier................... '//vn o=$fname(out)
      IFEND

      v = $mem(addr+68, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   Currently enabled................. '//vn o=$fname(out)

      v = $mem(addr+69, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   Currently active.................. '//vn o=$fname(out)

      v = $mem(addr+70, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '   Virgin_task....................... '//vn o=$fname(out)

      v = $mem(addr+71, 1)
      vn = $strrep(v, 16) // '(16)'
      putl '   Fill_0............................ '//vn o=$fname(out)

      v = $mem(addr+72, 6)
      next_task = v
      vn = $strrep(v, 16) // '(16)'
      vv = vn
      vn = vv
      putl '   Next_system_task.................. '//vn o=$fname(out)

      v = $mem(addr+78, 6)
      vn = $strrep(v, 16) // '(16)'
      vv = vn
      v = $mem(addr+84, 4)
      vn = $strrep(v, 16) // '(16)'
      vv = vv // ', size: ' // vn
      v = $mem(addr+88, 4)
      vn = $strrep(v, 16) // '(16)'
      vv = vv // ', next: ' // vn
      vn = vv
      putl '   Program_Descriptor ( ^sequence ).. '//vn o=$fname(out)

      v = $mem(addr+92, 6)
      vn = $strrep(v, 16) // '(16)'
      vv = vn
      v = $mem(addr+98, 4)
      vn = $strrep(v, 16) // '(16)'
      vv = vv // ', size: ' // vn
      v = $mem(addr+102, 4)
      vn = $strrep(v, 16) // '(16)'
      vv = vv // ', next: ' // vn
      vn = vv
      putl '   Parameters ( ^sequence ).......... '//vn o=$fname(out)

      v = $mem(addr+106, 4)
      vn = $strrep(v, 16) // '(16)'
      putl '   Task_ID........................... '//vn o=$fname(out)

      putl '   Status_at_termination:' o=$fname(out)
      v = $mem(addr+110, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '     Complete........................ '//vn o=$fname(out)
      putl '     Status: ' o=$fname(out)
      v = $mem(addr+111, 1)
      vn = $strrep(v, 16) // '(16)'
      IF v = 1 THEN
        vn = 'TRUE'
      ELSEIF v = 0 THEN
        vn = 'FALSE'
      IFEND
      putl '       Normal........................ '//vn o=$fname(out)
      IF v = 0 THEN
        v = $mem(addr+112, 5)
        vn = $strrep(v, 16) // '(16)'
        line = '       Condition..................... ' // vn
        vn = $ms(addr+112, 2)
        line = line // ' {' // $translate(osv$control_codes_to_quest_mark, vn)
        v2 = $mem(addr+114, 3)
        vn2 = $strrep(v2, 16) // '(16)'
        line = line // '-' // vn2 // '}: ' // $condition(v2 $translate(osv$control_codes_to_quest_mark, vn))
        putl line o=$fname(out)
        v = $mem(addr+118, 2)
        vn = $strrep(v, 16) // '(16)'
        putl '       Text: ' o=$fname(out)
        putl '         Size........................ '//vn o=$fname(out)
        vn = '...'
        putl '         Value: '//vn o=$fname(out)
        vn = $ms(addr+120, v)
        putl $translate(osv$control_codes_to_quest_mark, vn) o=$fname(out)
        v = 0
      IFEND
      putl ' ' o=$fname(out)
    IFEND
  WHILEND
  chad e=m

PROCEND dum$display_system_task_table
