
  CONST

    rac$eor_170 = 4,
    rac$eof_170 = 7,
    rac$eoi_170 = 8,
    rac$buffer_length_170 = 3072;

  TYPE

    rat$nos_records = (rac$abs, rac$acf, rac$cap, rac$opl, rac$oplc, rac$opld,
      rac$ovcap, rac$ovl, rac$pp, rac$ppu, rac$proc, rac$relo, rac$text,
      rac$ucf, rac$ulib, rac$uplx),

    rat$170_file_position = (rac$170_boi, rac$170_eor, rac$170_eof,
      rac$170_eoi),

    rat$word_170 = packed record
      case 0 .. 5 of
      = 0 = { full cyber 180 64 bit word }
        structure_mark: integer,
      = 1 = { raw Cyber 170 60 bit word }
        filler1: 0 .. 0f(16),
        first_170_word: 0 .. 7777777777(8), { note: nos word is split because }
        last_170_word: 0 .. 7777777777(8), { of 57 bit alignment rule. }
      = 2 = { 10 display code characters }
        filler2: 0 .. 0f(16),
        { note: the display code representation is specified as separate }
        { characters because of the 57 bit alignment rule. }
        dc1: 0 .. 77(8),
        dc2: 0 .. 77(8),
        dc3: 0 .. 77(8),
        dc4: 0 .. 77(8),
        dc5: 0 .. 77(8),
        dc6: 0 .. 77(8),
        dc7: 0 .. 77(8),
        dc8: 0 .. 77(8),
        dc9: 0 .. 77(8),
        dc10: 0 .. 77(8),
      = 3 = { loader table header word }
        filler3: 0 .. 0f(16),
        table_type: 0 .. 0fff(16),
        word_count: 0 .. 0fff(16),
        filler4: 0 .. 0ffffffff(16),
      = 4 = { other header word }
        filler5: 0 .. 0f(16),
        rec_type: 0 .. 7777777777(8),
        filler6: 0 .. 7777777777(8),
      = 5 = { prefix table word 2 }
        filler7: 0 .. 0f(16),
        filler8: 0 .. 77777777777777(8),
        ptr_170: 0 .. 777777(8),
      casend,
    recend,

    rat$record_170 = record
      name: string (7),
      rtype: rat$nos_records,
      length: 0 .. rac$buffer_length_170,
      position: 0 .. rac$buffer_length_170,
      buffer: array [0 .. rac$buffer_length_170] of rat$word_170,
    recend;
