DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦498ed0671⟧ TextFile

    Length: 48384 (0xbd00)
    Types: TextFile
    Names: »textxref«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦0b92c64d5⟧ »ctb« 
            └─⟦this⟧ 

TextFile

;        sm 75.07.25                  textxref     page ...1...
;
(extxref=set 1 disc
scope user extxref
extxref=algol
)

begin comment program for examination of externals in bossfiles;
message extxref versionid:    76 10 08, 7;
integer procedure sign_int(byte);
value byte;
boolean byte;
begin
comment extends a 12-bit signed integer to the corresponding
    24-bit signed integer;
sign_int:=(if byte shift (-11) then (-1) shift 12 else 0)
           add  (byte extract 12);
end sign_int;
integer extused, reservations, extdefined, offset,i;
integer array versionid(1:2,1:9);

\f


comment  sm 75.07.25                  textxref     page ...2...
;

begin
zone infile(25*128,1,stderror);
zone res_out,def_out,out_list(128,1,stderror);
   comment  description of the zones:
      infile     used for input of the 9 binary boss-files
      res_out    used for output of the reservations
                     (see: proc out_res)
      out_list   used for output of the list of references to externals
    ;
integer file_no,rel_ext,byte_no,abs_ext,extern,reserve;
comment  description of the variables:
   file_no    the number of the current input-file
   rel_ext    the position (relative to the current entrance in the
              external list) where an external is referenced
   byte_no    the bytenumber (in the input-file) of the current 
              entrance in the external list
   abs_ext    the absolute position (relative to the input-file)
              where an external is referenced
   extern     the current external number
   reserve    the size of the reservation
;


integer procedure getword(byteno);
value byteno;
integer byteno;
begin comment gets the value of the word which consists of the bytes with numbers
              (byteno-1,byteno)
         in the input-file;
getword:=getbyte(byteno-1) shift 12 + getbyte(byteno) extract 12;
end;

integer procedure getbyte(byteno);
value byteno;
integer byteno;
begin comment gets the value of the byte with the number
              byteno
         in the input-file;
boolean field byte;
byte:=byteno;
getbyte:=sign_int(infile.byte);
end getbyte;


\f


comment  sm 75.07.25                  textxref     page ...3...
;

procedure out_ext(extern,relative);
value extern,relative;
integer extern,relative;
begin comment outputs one record with the following fields:
                1. byte:  extern
                2. byte:  fileno
                2. word:  relative
         and counts them in the global variable
                  ext_used
      ;
integer field rel,ext_and_fil;
rel:=4;
extandfil:=2;

outrec6(outlist,4);

outlist.rel:=relative;
outlist.extandfil:=extern shift 12 add fileno;

extused:=extused + 1;
end outext;

procedure out_ext_def(extern,relative);
value extern,relative;
integer extern,relative;
begin comment outputs one record with the following fields:
      1.  byte:   extern
      2.  byte:   fileno
      2.  word:   relative
  and counts them in the global variable extdefined;
  integer field ext,rel;
  ext:=2;
  rel:=4;
  outrec6(defout,4);
  defout.ext:=extern shift 12 add fileno;
  defout.rel:=relative-4;
  extdefined:=extdefined+1;
end outextdef;

procedure out_res(extern,reserve,relative);
value extern,reserve,relative;
integer extern,reserve,relative;
begin comment  outputs the table reservations with the following format
                1. word:  extern
                2. word:  reserve
                3. word:  fileno
                4. word:  relative
        ;
integer field ext,res,fil,rel;
ext:=2;
res:=4;
fil:=6;
rel:=8;

outrec6(resout,8);

resout.ext:=extern;
resout.res:=reserve;
resout.fil:=fileno;
resout.rel:=relative;

reservations:=reservations + 1;

end outres;

\f


comment  sm 75.07.25                  textxref     page ...4...
;


integer array tail(1:10);
integer i;

begin
   comment in this block the 4 areas that are used in the program are created.
      if an error occurs, an errormessage is written, and the run is terminated;

   integer array status(1:4);
   integer i;
   boolean ok;
   zone z(128,1,stderror);
   tail(2):=1;
   ok:=true;

   for i:=1 step 1 until 4 do
   begin
      comment the areas are created. status tells if everything is ok or not;
      status(i):=0;
      tail(1):=case i of (36,36,36,36);  comment the size of the 4 areas used;
      open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>),0);
      status(i):=monitor(40,z,0,tail);  comment create entry;
      if status(i)<>0 then ok:=false;
      close(z,true);
   end;
 
   if -,ok then 
   begin
      comment the areas that have been created during this run, are deleted;
   write(out,<:<10>run terminated. error in creation of:>,
                          <: backing storage area.:>);
   for i:=1 step 1 until 4 do
   if status(i)=0 then
   begin
      open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>),0);
      monitor(48,z,0,tail);  comment remove entry;
      close(z,true);
   end
 
   else write(out,<:<10>:>, case i of (<:externals::>,<:reserve  ::>,<:extdef   ::>,
                                       <:list1    ::>),
                  case status(i) of (<::>,<: catalog i/o error.:>,
                  <: name conflict.:>,<: claims exceeded.:>,
                  <: catalog base does not allow creation of entry.:>,
                  <: name format illegal.:>));
   goto endprog;
   end;
end;
\f


comment  sm 75.07.25                  textxref     page ...5...
;


open(out_list,4,<:externals:>,0);
open(res_out,4,<:reserve:>,0);
open(defout,4,<:extdef:>,0);
offset:=0;
extdefined:=0;

extused:=0;
reservations:=0;

for fileno:=1 step 1 until 9 do
  begin
  open(infile,4,case fileno of (<:bterm2:>,<:bterm1:>,<:bjobstart:>,<:bjob:>,
                                <:bmount:>,<:bread:>,<:bprinter:>,<:bprocs:>,<:bbanker:>),0);
monitor(42)lookup_entry:(infile,0,tail);
inrec6(infile,tail(10));
  versionid(1,fileno):=getword(6); versionid(2,fileno):=getword(8);
  byteno:=10;   comment the external list starts in byte 9 and 10 of the input file;

  for relext:=getword(byteno) while relext <> 0 do
    begin
    if relext < 0 then
      byteno:=byteno-relext
    else
      begin
      abs_ext:=byte_no+rel_ext;
      if abs_ext extract 1 = 1 then
        begin comment  abs_ext is uneven ;
        abs_ext:=abs_ext - 1;
        out_ext(getbyte(abs_ext),abs_ext-1);
        end
      else
        begin
        comment abs_ext is even;
        extern:=getbyte(abs_ext);
        out_ext(extern,abs_ext-2);
        reserve:=getbyte(abs_ext-1);
        if reserve > 0 then
          out_res(extern,reserve,abs_ext-2);
        if extern=40 then
        begin comment   after ext(40)  (= reference to set-external-
                        procedure) follows a table (in word mode)
                        containing pairs of this format:
                           external value   ,   external number.
                        last element of a table is ext(-1000);
          absext:=absext+4;
          for extern:=getword(absext) while extern>-1000 do
          begin
            outextdef(extern,absext);
            absext:=absext+4;
          end;
          if offset<=0 then offset:=getword(absext-2)-absext+2;
        end;
        end;
      byteno:=byteno+2;
      end;
    end;

  close(infile,true);
  end;

close(out_list,true);
close(defout,true);
close(res_out,true);

end;

\f


comment  sm 75.07.25                  textxref     page ...6...
;

begin comment sorting of the externals;

zone z(ext_used shift (-7) add 1 shift 7,1,stderror);
comment the zone z is used for internal sorting of the external references;
integer i,j,k,m;
real temp;

procedure shellsort(maxext);
value maxext;
integer maxext;
begin
  swoprec6(z,maxext*4);
for i:=1 step i until maxext do
  m:=2*i-1;
for m:=m//2 while m <> 0 do
  begin
  k:=maxext-m;
  for j:=1 step 1 until k do
    begin
    for i:=j step -m until 1 do
      begin
      if long z(i+m) >= long z(i) then
        goto next_j;
      temp:=z(i);
      z(i):=z(i+m);
      z(i+m):=temp;
      end i;
next_j:
    end j;
  end m;
end shellsort;

open(z,4,<:externals:>,0);
shellsort(extused);
close(z,true);
open(z,4,<:extdef:>,0);
shellsort(extdefined);
close(z,true);

end sorting;


begin
procedure filename(filenumber);
value filenumber;
integer filenumber;
write(out,case filenumber of
  (<: tterm2    :>,
   <: tterm1    :>,
   <: tjobstart :>,
   <: tjob      :>,
   <: tmount    :>,
   <: tread     :>,
   <: tprinter  :>,
   <: tprocs    :>,
   <: tbanker   :>,
   <:           :>,
   <: central   :>));

for i:=1 step 1 until 9 do
begin
  filename(i);
  write(out,<:     :>,<<dd dd dd>,versionid(1,i),<<dddddddd>,versionid(2,i),<:<10>:>);
end;



\f


comment  sm 75.07.25                  textxref     page ...7...
;

begin comment writing of reservations;
integer field ext,res,fil,rel;
zone inres(reservations shift (-6) add 1 shift 7,1,stderror);
integer i,minext,lastext,position,fileno,ressum;

open(in_res,4,<:reserve:>,0);
inrec6(in_res,reservations*8);

write(out,<:<12>List of reservations - number of reservations::>,reservations);

lastext:=-51;

next_res:

minext:=600;
for i:=1 step 1 until reservations do
  begin
  ext:=i*8-6;
  fil:=ext+4;
  if inres.ext > lastext then
    begin
    if inres.ext < minext then
      begin
      minext:=inres.ext;
      file_no:=inres.fil;
      end;
    end;
  end;

if minext=600 then goto no_more_res;

write(out,<:<10>:>,<<ddd>,minext);
filename(file_no);
ressum:=0;  position:=1;
for i:=1 step 1 until reservations do
  begin
  rel:=i*8;
  fil:=rel-2;
  res:=rel-4;
  ext:=rel-6;
  if inres.ext = minext then
    begin
    if inres.fil > fileno then
      begin
      fileno:=inres.fil;
      res_sum:=0;  position:=1;
      write(out,<:<10>   :>);
      filename(fileno);
      end;
    if position = 0 then
      begin
      position:=1;
      write(out,<:<10>:>,false add 32,14);
      end;
    ressum:=ressum+in_res.res;
    write(out,<<ddddd>,in_res.rel,<::+:>,<<dddd>,in_res.res,<:=:>,res_sum,<:     :>);
    position:=(position+1) mod 6 ;
    end;
  end for;
lastext:=minext;
goto next_res;
no_more_res:  close(inres,true);
end;
\f


comment   lkn   75.09.10                    textxref  page  ...8...
;


begin comment  In this section the externals are input from three lists
               according to their use:

               input from                according to
               file 'externals'          references
               file 'extdef'             definitions
               call of writelist         namings
      Here they are merged and output on a bs-file 'list1' as records
      of this format:
             
               byte 1:      external number
               byte 2:      file number
               word 2:      key shift 20 add relative
               word 3-4:    textreference

      The following keys are used:
            0       unused external
            1       used, not named
            2       referenced, not defined
            3       defined, not referenced
            4       referenced
            5       named unused
            6       multiply defined
            7       defined
           15       stop key
;
  integer xref,xdef,filref,fildef,relref,reldef,xglob,doubledef,i;
  integer field r,xf;
  boolean field x,f;
  real field t;
  zone z,zdef,udz(128,1,stderror);

  procedure save(list,ext,fil,rel,text);
  comment   outputs records of merged externals on 'list1';
  value list,ext,fil,rel;
  integer list,ext,fil,rel;
  string text;
  begin
    outrec6(udz,8);
    udz.xf:=ext shift 12+fil;
    udz.r:=list shift 20 add rel;
    udz.t:=real text;
  end save;
 \f


comment   lkn   75.09.10                    textxref  page  ...9...
;

  procedure writelist(xname,filname,relname,explan);
  comment   this procedure is called only to connect names to ex-
            ternals. The very merging is going on here, but it is
            stepping through all possible externals from -12 to 550
            (according to a global variable xglob) independently of
            the procedure calls  -  when there only is one call not
            lower than 550;
  value xname,filname,relname;
  integer xname,filname;
  real relname;
  string explan;
  begin
    integer state,oldglob;
    oldglob:=-50;
newext:
    state:=1;
    xglob:=xglob+1;
    if xglob>550 then goto afterlast;
    if xref=xglob then state:=state+1;
    if xdef=xglob then state:=state+2;
    if xname=xglob then state:=state+4;

newcase:
    case state of
    begin
      save(0,xglob,0,0,<::>);
      begin
        save(1,xglob,0,0,<::>);
        save(2,xglob,0,0,<::>);
        save(4,xglob,filref,relref,<::>);
      end;
      begin
        save(1,xglob,0,0,<::>);
        save(3,xglob,fildef,reldef,<::>);
      end;
      begin
        save(1,xglob,0,0,<::>);
        save(4,xglob,filref,relref,<::>);
      end;
      save(5,xglob,filname,round(relname*10), explan);
      begin
        if xglob<>oldglob then
        begin
          if filname=4 then save(7,xglob,filname+10,round(relname*10),explan)
                       else save(2,xglob,0,0,explan);
          oldglob:=xglob;
        end;
        save(4,xglob,filref,relref,explan);
      end;
      save(3,xglob,fildef,reldef,explan);
      save(4,xglob,filref,relref,explan);
    end;

    if xref=xglob then
    begin
      if extused>0 then
      begin
        inrec6(z,4);
        extused:=extused-1;
        xref:=signint(z.x);
        filref:=signint(z.f);
        relref:=z.r;
      end else xref:=1000;
      if xref=xglob then goto newcase;
    end;
   \f


comment   lkn   75.09.10                    textxref  page  ...10...
;
    
    if xdef=xglob then
    begin
newdef:
      save(7,xdef,fildef,reldef,if xdef=xname then explan else <::>);
      if extdefined>0 then 
      begin
        inrec6(zdef,4);
        extdefined:=extdefined-1;
        xdef:=signint(zdef.x);
        fildef:=signint(zdef.f);
        reldef:=zdef.r;
      end else xdef:=1000;
      if xdef=xglob then
      begin
        if xdef<>doubledef then
        save(6,xdef,0,0,if xdef=xname then explan else <::>);
        doubledef:=xdef;
        goto newdef;
      end;
    end;

    if xglob<xname  then goto newext;
afterlast:
  end;


  x:=1; f:=2; xf:=2; r:=4; t:=8; xglob:=-13; doubledef:=-25;
  open(udz,4,<:list1:>,0);
  open(zdef,4,<:extdef:>,0);
  open(z,4,<:externals:>,0);
  inrec6(z,4);
  xref:=signint(z.x);
  filref:=signint(z.f);
  relref:=z.r;
  extused:=extused-1;
  inrec6(zdef,4);
  xdef:=signint(zdef.x);
  fildef:=signint(zdef.f);
  reldef:=zdef.r;
  extdefined:=extdefined-1;
\f


comment   lkn   75.09.10                    textxref  page  ...11...
;



   writelist(-12,13,3.0,<:boss protection register:>);
   writelist(-11,13,3.0,<:boss own protection key:>);
   writelist(-10,13,5.0,<:rel: free-total (d10-d12):>);
   writelist(-9,13,5.0,<:rel: total-margin (d12-d13):>);
   writelist(-8,7,14.0,<:device mask 2:>);
   writelist(-7,7,14.0,<:device mask 1:>);
   writelist(-6,7,14.0,<:device bits 2 for banker:>);
   writelist(-5,7,14.0,<:device bits 1 for banker:>);
   writelist(-4,7,14.0,<:boss std interval upper:>);
   writelist(-3,7,14.0,<:boss std interval lower:>);
   writelist(-2,11,44.0,<:boss private interval upper:>);
   writelist(-1,11,44.0,<:boss private interval lower:>);
   writelist(0,4,33.0,<:base of external table:>);
   writelist(1,4,33.0,<:send and wait:>);
   writelist(2,4,33.0,<:send and wait fast:>);
   writelist(3,4,33.0,<:lock:>);
   writelist(4,4,33.0,<:open:>);
   writelist(5,4,33.0,<:lock chained:>);
   writelist(6,4,33.0,<:open chained:>);
   writelist(7,4,33.0,<:get pages:>);
   writelist(8,4,33.0,<:page jump:>);
   writelist(9,4,33.0,<:send and wait slow:>);
   writelist(11,4,33.0,<:clear core:>);
   writelist(12,4,33.0,<:reserve virt:>);
   writelist(13,4,33.0,<:(and 41) 1. dummy 2. move virt:>);
   writelist(14,4,33.0,<:(and 41) 1. dummy 2. simulate lock:>);
   writelist(15,4,33.1,<:end init:>);
   writelist(16,4,42.0,<:number of core places:>);
   writelist(17,4,33.1,<:first core place (abs addr):>);
   writelist(18,4,35.0,<:reservation in coruno table:>);
   writelist(19,4,35.0,<:reservation in semaphore table:>);
   writelist(20,4,35.0,<:reservation in sender table:>);
   writelist(21,4,33.1,<:coruno output:>);
   writelist(22,6,64.0,<:first terminal output:>);
   writelist(23,4,33.1,<:name of main console:>);
   writelist(24,4,33.0,<:(and 41) 1. dummy 2. put in active chain:>);
   writelist(25,4,33.1,<:call:>);
   writelist(26,4,33.1,<:current coroutine:>);
   writelist(27,4,33.1,<:carriage return:>);
   writelist(28,4,33.1,<:boss start time address:>);
   writelist(29,4,33.1,<:number of work core places:>);
   writelist(30,4,33.1,<:stop and wait:>);
   writelist(31,4,33.1,<:init alarm:>);
   writelist(32,4,33.1,<:prepare access:>);
   writelist(33,4,33.1,<:terminate access:>);
   writelist(34,4,33.1,<:w0 call:>);
   writelist(35,4,33.1,<:wait answer:>);
   writelist(36,4,33.1,<:search limit:>);
   writelist(37,4,33.1,<:testoutput switch:>);
   writelist(38,4,33.1,<:current segment in bosstest:>);
   writelist(39,4,33.1,<:name table address of bosstest:>);
   writelist(40,4,33.1,<:set externals:>);
\f


comment   lkn   75.09.10                    textxref  page ...12...
;

   writelist(51,6,72.0,<:address of request queue semaphore:>);
   writelist(52,6,72.0,<:address of request free semaphore:>);
   writelist(53,6,64.0,<:terminal reserve semaphore:>);
   writelist(54,6,64.0,<:terminal full semaphore (simple):>);
   writelist(56,10,3.0,<:reader operation queue (chained):>);
   writelist(57,10,3.0,<:reader free boss controlled:>);
   writelist(58,10,3.0,<:reader full boss controlled:>);
   writelist(59,9,52.0,<:rewinder buf:>);
   writelist(60,11,68.0,<:segments free:>);
   writelist(61,11,68.0,<:segments full:>);
   writelist(62,5,33.0,<:first attention semaphore (simple):>);
   writelist(63,5,33.0,<:first psjob queue semaphore (chained):>);
   writelist(64,5,33.0,<:first job in core semaphore (binary):>);
   writelist(65,10,3.0,<:reader free job controlled:>);
   writelist(66,10,3.0,<:reader full job controlled:>);
   writelist(67,13,4.0,<:banker queue:>);
   writelist(72,10,19.0,<:card reader free operation queue :>);
   writelist(74,12,10.0,<:catalock:>);
   writelist(75,12,25.0,<:reserve usercat:>);
   writelist(76,7,14.0,<:psjob answer:>);
   writelist(77,9,52.0,<:rewinder queue:>);
   writelist(78,11,42.0,<:reserve banker access:>);
   writelist(79,6,44.0,<:kit change queue:>);
   writelist(80,11,15.0,<:start printer queue (tapeprinter, paperprinter 1,2,-):>);
   writelist(81,6,64.0,<:terminal input semaphore:>);
   writelist(100,5,31.1,<:first psjob coroutine:>);
   writelist(101,5,33.0,<:first commandio coroutine:>);
\f


comment   lkn   75.09.10                    textxref  page  ...13...
;

   writelist(102,4,43.0,<:first coroutine (pager):>);
   writelist(130,5,47,<:virt snapshot,autoline:>);
   writelist(131,5,47,<:rel entry snapshot (virt 130):>);
   writelist(132,5,47,<:rel entry autoline (virt 130):>);
   writelist(133,5,33,<:autoline (rel on job file page):>);
   writelist(134,5,33,<:terminal user rights (rel on job file page):>);
   writelist(135,0,0,<:rel hotnews (virt=247):>);
   writelist(136,0,0,<:abs hotnews request line address:>);
   writelist(140,12,60.0,<:virt remote batch codepage:>);
   writelist(141,12,60.0,<:rel lookup and reserve device (virt=140):>);
   writelist(142,12,60.0,<:rel lookup device (virt=140):>);
   writelist(143,12,60.0,<:rel search device (virt=140):>);
   writelist(144,12,60.0,<:rel search and lookup device (virt=140):>);
   writelist(145,12,60.0,<:rel define device (virt=140):>);
   writelist(146,12,60.0,<:rel connect telex (virt=140):>);
   writelist(147,11,12,<:rel entry display convert:>);
   writelist(150,4,33.1,<:start of terminal area:>);
   writelist(151,7,14.0,<:first of psjob sender table entries:>);
   writelist(152,6,71.0,<:first of request lines:>);
   writelist(153,7,14.0,<:top of psjob sender table:>);
   writelist(154,6,31.0,<:rel print catolog entry (virt=206):>);
   writelist(155,5,32.0,<:value for abs page (nextline):>);
   writelist(156,4,42.0,<:first of core table:>);
   writelist(157,5,33.0,<:virt nextline, initline, bulkfile:>);
   writelist(158,5,32.0,<:rel nextline (virt=157):>);
   writelist(159,12,25.0,<:virt lookup user:>);
   writelist(160,12,25.0,<:rel lookup user (virt=159):>);
   writelist(161,5,32.0,<:rel initline (virt=157):>);
   writelist(162,5,46.0,<:virt list etc. (rel=204, 205, 209, 224, 225, 229, 264, 310, 491):>);
   writelist(163,5,33.0,<:first terminal sender descr:>);
   writelist(164,10,3.0,<:first of boss controlled buffer:>);
   writelist(165,10,3.0,<:top of boss controlled buffer:>);
   writelist(166,10,3.0,<:first of job controlled buffer:>);
   writelist(167,10,3.0,<:top of job controlled buffer:>);
   writelist(168,10,3.0,<:page count address:>);
\f


comment   lkn   75.09.10                    textxref  page  ...14...
;
   writelist(172,7,15.1,<:terminal user rights (on job descr page):>);
   writelist(173,7,15.1,<:rel addr of reader table (from reader operation):>);

   writelist(174,5,46.0,<:rel verify (virt=162):>);
   writelist(175,5,32.0,<:psjob queue:>);
   writelist(176,5,32.0,<:job in core:>);
   writelist(177,5,32.0,<:job description page:>);
   writelist(178,5,32.0,<:first address of terminal buffer:>);
   writelist(179,5,32.0,<:rel on jobfile page: console state<12 + job state.
                            console state (left byte):  8+ready*4+user*2+operator*1+unlogged*16.
                            job state (right byte): 
                                1<0  job card reader
                                1<1  job printer
                                1<2  job tape reader
                                1<3  off line
                                1<4  job printer used
                                1<5  no conversation
                                1<6  job printer accounted:>);
   writelist(180,5,32.0,<:exhaust count:>);
   writelist(181,5,32.0,<:rest room on page:>);
   writelist(182,5,32.0,<:job buffer index:>);
   writelist(183,5,32.0,<:get current virt buffer address:>);
   writelist(184,5,32.0,<:message address:>);
   writelist(185,5,32.0,<:first of job (even):>);
   writelist(186,5,32.0,<:top of job ():>);
   writelist(187,5,32.0,<:base store rel:>);
   writelist(188,5,32.0,<:abs on page:>);
   writelist(189,5,32.0,<:work page virt address:>);
   writelist(190,5,32.0,<:line got - logical status at alarm:>);
   writelist(191,5,32.0,<:rest room on page:>);
   writelist(192,5,32.0,<:job buffer index:>);
   writelist(193,5,32.0,<:virt buffer:>);
   writelist(194,5,32.0,<:first buffer byte:>);
   writelist(195,5,32.0,<:name of super buffer area:>);
   writelist(196,5,32.0,<:length of super buffer (no of segm. * 512 - 512):>);
   writelist(197,5,32.0,<:terminal full:>);
   writelist(198,5,32.0,<:prog state (and answer rel):>);
   writelist(199,5,32.0,<:current virtual address of card buffer:>);
   writelist(200,5,32.0,<:last received status of card reader:>);
   writelist(201,5,32.0,<:card length:>);
   writelist(202,5,33.0,<:virt commandio central:>);
   writelist(203,5,32.0,<:rel after action (virt=202):>);
   writelist(204,5,46.0,<:rel alarm printing (virt=162):>);
   writelist(205,5,46.0,<:rel io alarm (virt=162):>);
   writelist(206,6,31.0,<:virt save, get:>);
   writelist(207,6,31.0,<:rel save (virt=206):>);
   writelist(208,6,31.0,<:rel get (virt=206):>);
   writelist(209,5,46.0,<:rel list (virt=162):>);
   writelist(210,5,46.0,<:rel file alarm (virt=162):>);
   writelist(211,5,32.0,<:rel bulk get (virt=157):>);
   writelist(212,5,32.0,<:rel bulk save (virt=157):>);
   writelist(213,5,32.0,<:rel clear corrections (virt=157):>);
   writelist(214,5,46.0,<:rel date and time (virt=162):>);
   writelist(215,6,31.0,<:virt logout, check login (rel=216, 220):>);
   writelist(216,6,31.0,<:rel logout (virt=215):>);
   writelist(217,5,32.0,<:terminal name:>);
   writelist(218,5,32.0,<:basis file name (jobfile page):>);
   writelist(219,5,32.0,<:rel read login information (virt=202):>);
\f


comment   lkn   75.09.10                    textxref  page  ...15...
;

   writelist(220,6,31.0,<:rel check login param (virt=215):>);
   writelist(221,5,32.0,<:rel terminal reserve (on jobfile page):>);
   writelist(222,5,32.0,<:rel terminal sender descr. addr. (on jobfile page):>);
   writelist(223,5,32.0,<:rel attention semaphore (on jobfile page):>);
   writelist(224,5,46.0,<:rel start commandio (virt=162):>);
   writelist(225,5,46.0,<:rel login after error (virt=162):>);
   writelist(226,5,32.0,<:rel(-2:login time), operations performed (on jobfile page):>);
   writelist(227,5,32.0,<:rel std interval (on jobfile page):>);
   writelist(228,5,32.0,<:rel of first correction segm. (on jobfile page):>);
   writelist(229,5,46.0,<:rel general print (virt=162):>);
   writelist(230,5,32.0,<:rel next file index (on jobfile page):>);
   writelist(231,5,32.0,<:rel segm. number in basis file (on jobfile page):>);
   writelist(232,6,9.0,<:rel newjob (virt=237):>);
   writelist(233,6,31.0,<:virt save and clean buffer:>);
   writelist(234,6,31.0,<:operator name address:>);
   writelist(235,6,31.0,<:rel get from psjob (virt=206):>);
   writelist(236,6,32.0,<:rel commandio answer semaphore (on jobfile page):>);
   writelist(237,6,9.0,<:virt convert, go, newjob, run, regret, job, stop (506):>);
   writelist(238,6,9.0,<:rel convert (virt=237):>);
   writelist(239,6,9.0,<:rel go (virt=237):>);
   writelist(240,6,9.0,<:rel run (virt=237):>);
   writelist(241,6,9.0,<:rel regret (virt=237):>);
   writelist(242,6,9.0,<:rel job (virt=237):>);
   writelist(243,6,9.0,<:rel scope (virt=251):>);
   writelist(244,6,1.0,<:virt answer etc. (rel=245, 246, 490, 254, 255, 256, 258, 295):>);
   writelist(245,6,1.0,<:rel answer (virt=244):>);
   writelist(246,6,1.0,<:rel kill (virt=244):>);
   writelist(247,6,44.0,<:virt display etc. (rel=248, 249, 250, 263, 265, 485, 486):>);
   writelist(248,6,44.0,<:rel display (virt=247):>);
   writelist(249,6,44.0,<:rel request (virt=247):>);
   writelist(250,6,44.0,<:rel kit (virt=247):>);
   writelist(251,6,9.0,<:virt rename, clear, scope:>);
   writelist(252,6,9.0,<:rel rename (virt=251):>);
   writelist(253,6,9.0,<:rel clear (virt=251):>);
   writelist(254,6,1.0,<:rel start (virt=244):>);
   writelist(255,6,1.0,<:rel repeat (virt=244):>);
   writelist(256,6,1.0,<:rel close (virt=244):>);
   writelist(257,5,32.0,<:rel return from nextfile etc.:>);
   writelist(258,6,1.0,<:rel change (virt=244):>);
   writelist(259,6,31.0,<:virt transmit:>);
   writelist(260,6,31.0,<:rel transmit (virt=259):>);
   writelist(261,6,31.0,<:rel create output (virt=206):>);
   writelist(262,6,31.0,<:rel return from create output:>);
   writelist(263,6,44.0,<:rel kit label (virt=247):>);
   writelist(264,5,46.0,<:rel attention (virt=162):>);
   writelist(265,6,44.0,<:rel resource display (virt=247):>);
   writelist(266,7,14.0,<:max core lock rel banker operation:>);
   writelist(267,13,4.0,<:rel unclaimed accounts:>);
   writelist(268,13,4.0,<:rel free accounts:>);
   writelist(269,13,4.0,<:rel account accounts:>);
   writelist(270,13,5.0,<:(j20) rel finis time record:>);
   writelist(271,13,5.0,<:(j7) rel state record:>);
   writelist(272,13,5.0,<:(d22) in core, a:>);
   writelist(273,13,5.0,<:(d22+2) in core, b:>);
   writelist(274,13,5.0,<:(j15) rel reserve all record:>);
   writelist(275,13,5.0,<:(j17+2) rel job name record + 2:>);
   writelist(276,13,5.0,<:(j17+6) rel job name record + 6:>);
   writelist(277,13,5.0,<:(d0) first psjob (downer):>);
   writelist(278,13,5.0,<:(d2+1) dead head:>);
   writelist(279,13,5.0,<:(d1+1) resource head:>);
\f


comment   lkn   75.09.10                    textxref  page  ...16...
;

   writelist(280,13,5.0,<:virt banker variables:>);
   writelist(281,13,4.0,<:rel of account name (virt=280):>);
   writelist(282,13,4.0,<:old time - old cpu time:>);
   writelist(283,13,3.0,<:no of protection keys available for jobs:>);
   writelist(284,13,4.0,<:length psjob descr:>);
   writelist(285,13,6.0,<:name table address of catalog:>);
   writelist(286,13,6.0,<:name table address of usercat:>);
   writelist(287,13,5.0,<:slice length drum:>);
   writelist(288,13,5.0,<:slice length disc:>);
   writelist(289,5,32.0,<:rel special char and logout cause - jobfile:>);
   writelist(290,6,45.0,<:base of boss kit table (10 bytes pr. entry):>);
   writelist(291,6,45.0,<:last of boss kit table:>);
   writelist(292,13,5.0,<:(j7+1) rel time class:>);
   writelist(293,13,5.0,<:(j14) rel rest claims:>);
   writelist(294,13,5.0,<:(f2) length of resource vector:>);
   writelist(295,6,1.0,<:rel newtape (virt=244):>);
   writelist(296,9,52.0,<:virt name, label:>);
   writelist(297,9,52.0,<:rel name (virt=296):>);
   writelist(298,9,52.0,<:rel label (virt=296):>);
   writelist(299,5,32.0,<:rel state of term.output (on jobfile page):>);
   writelist(300,5,32.0,<:rel terminal name (on jobfile page):>);
   writelist(301,5,32.0,<:rel next byte (on jobfile page):>);
   writelist(302,5,32.0,<:rel buf byte (on jobfile page):>);
   writelist(303,5,32.0,<:rel virt byte (on jobfile page):>);
   writelist(304,5,32.0,<:rel appetite (on jobfile page):>);
   writelist(305,5,32.0,<:rel out bytes (on jobfile page):>);
   writelist(306,5,32.0,<:rel terminal input semaphore (on jobfile page):>);
   writelist(307,6,9.0,<:rel lookup (virt=251):>);
   writelist(308,13,5.0,<:(j21) rel first core place on banker page:>);
   writelist(309,13,5.0,<:(d13) rel margin on banker page:>);
   writelist(310,5,46.0,<:rel message action (virt=162):>);
   writelist(311,9,52.0,<:virt action table:>);
   writelist(312,9,52.0,<:virt mount table:>);
   writelist(313,9,52.0,<:virt psjob mount:>);
   writelist(314,9,52.0,<:rel mount special (virt=313):>);
   writelist(315,9,52.0,<:rel mount ring (virt=313):>);
   writelist(316,9,53.0,<:rel mount tape (virt=313):>);
   writelist(317,9,53.0,<:rel suspend (virt=313):>);
   writelist(318,9,53.0,<:rel release (virt=313):>);
   writelist(319,9,53.0,<:rel tape ready (virt=313):>);
   writelist(320,8,19.1,<:virt psjob i/o (virt=321):>);
   writelist(321,8,19.1,<:rel entry psjob i/o:>);
   writelist(322,9,52.0,<:reserved state in job table:>);
   writelist(323,8,19.1,<:virt psjob aux:>);
   writelist(324,7,14.0,<:(d14+3) rel psjobno on psjob descr page:>);
   writelist(325,7,14.0,<:(d107) rel swop area spec on psjob descr page:>);
   writelist(326,7,14.0,<:(d20) rel project no on psjob descr page:>);
   writelist(327,7,14.0,<:(d91) rel job no on psjob descr page:>);
   writelist(328,7,14.0,<:(d19) rel jobname on psjob descr page:>);
   writelist(329,7,14.0,<:(d19+2) rel jobname + 2 on psjob descr page:>);
   writelist(330,7,14.0,<:(d19+4) rel jobname + 4 on psjob descr page:>);
   writelist(331,7,14.0,<:(d96) rel psjob sem rel (=psjob no*e13) on psjob descr page :>);
   writelist(332,7,14.0,<:(d87) rel psjob operation: semaphore operation on psjob descr page:>);
   writelist(333,7,14.0,<:(d87+2) rel psjob operation + 2: on psjob descr page:>);
   writelist(334,7,14.0,<:(d87+4) rel psjob operation + 4: on psjob descr page:>);
   writelist(335,7,14.0,<:(d87+6=d14) rel psjob operation + 6:banker operation on psjob descr page:>);
   writelist(336,7,14.0,<:(d98) rel rest mounts (byte) on psjob descr page:>);
   writelist(337,7,14.0,<:rel rest suspends (byte) on psjob descr page:>);
   writelist(338,7,14.0,<:(d0) virt jobfile descr:>);
   writelist(339,7,14.0,<:(d104) rel finis cause on psjob descr page:>);
\f


comment   lkn   75.09.10                   textxref  page  ...17...
;
 
   writelist(340,7,14.0,<:(d30+2) rel device mask (last of db word) on psjob descr page:>);
   writelist(341,7,14.0,<:(d108) rel sender table address on psjob descr page:>);
   writelist(342,7,14.0,<:(d106) rel process descr. address of job on psjob descr page:>);
   writelist(343,7,14.0,<:(d93) rel request line on psjob descr page:>);
   writelist(344,7,14.0,<:(d43) rel mounts on psjob descr page:>);
   writelist(345,7,14.0,<:(d111+1) rel rest accounts (byte) on psjob descr page:>);
   writelist(346,7,14.0,<:(d61) rel user ident in user cat on psjob descr page:>);
   writelist(347,7,14.0,<:(d111) rel rest converts (byte) on psjob descr page:>);
   writelist(348,7,14.0,<:(d14+2) rel (op.code, psjobno) in banker operation on psjob descr page:>);
   writelist(349,7,14.0,<:(d14+4) rel (all, stations) in banker operation on psjob descr page:>);
   writelist(350,8,19.1,<:rel answer (virt=321):>);
   writelist(351,8,69.0,<:rel user kill (virt=426):>);
   writelist(352,8,69.0,<:rel terminate (virt=426):>);
   writelist(353,8,69.0,<:rel time-up (receive timer op.) (virt =426):>);
   writelist(354,8,69.0,<:rel finis request (virt=417):>);
   writelist(355,8,69.0,<:rel break request (virt=426):>);
   writelist(356,8,69.0,<:rel replace request (virt=426):>);
   writelist(357,8,69.0,<:rel timer request (virt=426):>);
   writelist(358,8,69.0,<:rel input exhausted (virt=426):>);
   writelist(359,8,69.0,<:rel hard error primary input (virt=426):>);
   writelist(360,8,69.0,<:rel end medium primary input (virt=417):>);
   writelist(361,8,69.0,<:rel mount error (cause=9,...,16) (virt=426):>);
   writelist(362,8,69.0,<:rel swop out and wait (virt=426):>);
   writelist(363,8,69.0,<:rel clean catalog (virt=495):>);
   writelist(364,7,14.0,<:rel banker kill (virt=473):>);
   writelist(365,10,21.0,<:virt start card:>);
   writelist(366,10,21.0,<:rel start card:>);
   writelist(367,5,32.0,<:rel on jobfile page: cards free jobcontrolled:>);
   writelist(368,5,32.0,<:rel on jobfile page: cards full jobcontrolled:>);
   writelist(369,5,32.0,<:rel on jobfile page: first virt card jobcontrolled:>);
   writelist(370,5,32.0,<:rel on jobfile page: top virt card jobcontrolled:>);
   writelist(371,7,14.0,<:rel on job descr page: card reader queue:>);
   writelist(372,7,14.0,<:rel priority (virt=400):>);
   writelist(373,7,14.0,<:rel wait (virt=400):>);
   writelist(374,7,14.0,<:rel preserve (virt=400):>);
   writelist(375,7,14.0,<:(d140) rel on job descr page: no of conversational input lines:>);
   writelist(376,7,14.0,<:(d137) rel on job descr page: actual waiting time:>);
   writelist(377,11,12.0,<:rb printer wait semaphore:>);
   writelist(378,11,12.0,<:remote batch printer convert queue:>);
   writelist(379,11,12.0,<:paper manipulation (binary semaphore):>);
   writelist(380,11,12.0,<:paper 0 queue address:>);
   writelist(381,11,12.0,<:printer wait:>);
   writelist(382,11,4.0,<:convert operations semaphore (type 0 and 1):>);
   writelist(383,11,68.0,<:virt superbuffer start:>);
   writelist(384,11,68.0,<:virt superbuffer top:>);
   writelist(385,11,12.0,<:virt paper descr page:>);
   writelist(386,11,68.0,<:virt main loop page:>);
   writelist(387,11,44.0,<:virt central page:>);
   writelist(388,11,4.0,<:convert operations semaphore (type 2):>);
   writelist(389,11,57.0,<:virt triangle page:>);
   writelist(390,11,-99.0,<:virt return from next paper fount (tape printer):>);
   writelist(391,11,-99.0,<:rel return from next paper found (tape printer):>);
   writelist(392,11,12.0,<:rel entry, any paper (tape printer):>);
   writelist(393,11,-99.0,<:tape printer, rel of paper descr:>);
   writelist(394,11,-99.0,<:virt tape printer, main loop:>);
   writelist(395,11,-99.0,<:virt tape printer, mounter:>);
   writelist(396,11,12.0,<:rel select command (virt=385):>);
   writelist(397,11,12.0,<:rel reject command (virt=385):>);
   writelist(398,11,-99.0,<:rel sem addr to paper descr:>);
   writelist(399,11,-99.0,<:convert answer semaphore:>);
\f


comment   lkn   75.09.10                    textxref  page  ...18...
;

   writelist(400,7,13.0,<:virt codepage 3:>);
   writelist(401,7,14.0,<:(c61) rel include user (on codepage 4) (virt=473):>);
   writelist(402,7,14.0,<:rel replace job (virt=400):>);
   writelist(403,7,14.0,<:(d28) rel first of private kit table:>);
   writelist(404,7,14.0,<:rel entry off-line job (virt=400):>);
   writelist(405,7,14.0,<:rel entry on-line job (virt=400):>);
   writelist(406,7,14.0,<:(d62) rel no of useable private kits:>);
   writelist(407,7,14.0,<:(d22) rel user cat ref disc rest key 3 on job descr page:>);
   writelist(408,7,14.0,<:(d60) rel user cat ref drum rest key 3 on job descr page:>);
   writelist(409,7,14.0,<:(d69) rel disc rest key 2 on job descr page:>);
   writelist(410,7,14.0,<:(d58) rel disc rest key 1 on job descr page:>);
   writelist(411,7,14.0,<:(d67) rel drum rest key 2 on job descr page:>);
   writelist(412,7,14.0,<:(d59) rel drum rest key 1 on job descr page:>);
   writelist(413,12,10.0,<:rel ref prepare bs adjust (virt=415):>);
   writelist(414,12,10.0,<:rel ref terminate bs adjust (virt=415):>);
   writelist(415,12,10.0,<:virt ref bs adjust:>);
   writelist(416,12,25.0,<:virt ref usercat buffer page:>);
   writelist(417,8,69.0,<:virt ref finis job page:>);
   writelist(418,7,11.0,<:(d122) rel rb terminal ident on job descr page:>);
   writelist(419,7,14.0,<:(d15) rel tail on psjob descr page:>);
   writelist(420,7,14.0,<:rel minimal command (virt=400):>);
   writelist(421,7,14.0,<:(d24) rel standard interval on psjob descr page:>);
   writelist(422,7,14.0,<:(d65-d30) max device rel to standard device:>);
   writelist(423,7,11.0,<:(d119) rel rb device name table addr on job descr page:>);
   writelist(424,7,11.0,<:(d120) rel rb device creation number on job descr page:>);
   writelist(425,7,11.0,<:(d121) rel rb printer name (last of db word) on job descr page:>);
   writelist(426,8,69.0,<:virt ref break page:>);
   writelist(427,8,69.0,<:rel finis (finiscause) (virt=417):>);
   writelist(428,12,10.0,<:rel ref transfer perm claims and prepare (virt=415):>);
   writelist(429,5,33.0,<:rel next store in job input area:>);
   writelist(430,12,3.0,<:used accounts:>);
   writelist(431,12,1.0,<:rel outrec (virt=436):>);
   writelist(432,12,1.0,<:rel prepare (virt=436):>);
   writelist(433,12,1.0,<:rel private (virt=436):>);
   writelist(434,12,1.0,<:rel terminate (virt=436):>);
   writelist(435,12,1.0,<:virt account buf:>);
   writelist(436,12,1.0,<:virt account code:>);
   writelist(437,10,55.0,<:rel empty files in psload (virt=440):>);
   writelist(438,7,14.0,<:(d92) rel paper tape count (byte) on psjob descr page:>);
   writelist(439,7,14.0,<:(d51) rel tapes (byte) on psjob descr page:>);
   writelist(440,10,55.0,<:virt load, empty files (rel=437, 441):>);
   writelist(441,10,55.0,<:rel load entry (virt=440):>);
   writelist(442,10,33.0,<:virt read tape (rel=443):>);
   writelist(443,10,33.0,<:rel read tape (virt=442):>);
   writelist(444,10,44.0,<:virt read card (rel=445):>);
   writelist(445,10,44.0,<:rel read card entry (virt=444):>);
   writelist(446,5,32.0,<:tape reader (job): prog state (and answer rel):>);
   writelist(447,5,32.0,<:tape reader (job): start rel:>);
   writelist(448,5,32.0,<:tape reader (job): curr. virt addr. of tape buffer:>);
   writelist(449,5,32.0,<:tape reader (job): last received status of tape reader:>);
   writelist(450,5,32.0,<:card reader (job): start rel of input in buffer:>);
   writelist(451,7,13.0,<:virt codepage 2:>);
   writelist(452,7,14.0,<:rel size command (virt=400):>);
   writelist(453,7,14.0,<:rel internals command (virt=400):>);
   writelist(454,7,14.0,<:rel program command (virt=400):>);
   writelist(455,7,14.0,<:rel buf command (virt=400):>);
   writelist(456,7,14.0,<:rel areas command (virt=400):>);
   writelist(457,7,14.0,<:rel key command (virt=400):>);
   writelist(458,7,14.0,<:rel perm command (virt=400):>);
   writelist(459,7,14.0,<:rel temp command (virt=400):>);
\f


comment   lkn   75.09.10                    textxref  page  ...19...
;

   writelist(460,7,14.0,<:rel latest command (virt=400):>);
   writelist(461,7,14.0,<:rel mounts command (virt=400):>);
   writelist(462,7,14.0,<:rel output command (virt=400):>);
   writelist(463,7,14.0,<:rel time command (virt=400):>);
   writelist(464,7,14.0,<:rel account command (virt=400):>);
   writelist(465,7,14.0,<:rel stations command (virt=400):>);
   writelist(466,7,14.0,<:rel device command (virt=473):>);
   writelist(467,7,14.0,<:rel tapes command (virt=400):>);
   writelist(468,7,14.0,<:rel cbuf command (virt=400):>);
   writelist(469,7,14.0,<:rel suspend command (virt=400):>);
   writelist(470,7,14.0,<:rel proc set bs claim (virt=451):>);
   writelist(471,7,13.0,<:virt codepage 5:>);
   writelist(472,7,13.0,<:virt codepage 1:>);
   writelist(473,7,13.0,<:virt codepage 4:>);
   writelist(474,5,32.0,<:rel current paper type on jobfile page:>);
   writelist(475,7,14.0,<:rel disc rest key 3:>);
   writelist(476,7,14.0,<:rel drum rest key 3:>);
   writelist(477,9,53.0,<:rel finis mount (virt=313):>);
   writelist(478,8,69.0,<:rel return from mounter finis (virt=477):>);
   writelist(479,7,14.0,<:(d74) rel convert claim: entries:>);
   writelist(480,7,14.0,<:(d74+1) rel convert claim: slices:>);
   writelist(481,8,69.0,<:rel corelock request (virt=426):>);
   writelist(482,8,69.0,<:rel coreopen request (virt=426):>);
   writelist(483,7,14.0,<:rel online command (virt=400):>);
   writelist(484,7,14.0,<:rel corelock command (virt=400):>);
   writelist(485,6,44.0,<:rel message (virt=247) :>);
   writelist(486,6,44.0,<:rel remove (virt=247) :>);
   writelist(487,9,52.0,<:rel even on label page (virt=296):>);
   writelist(488,9,52.0,<:rel nrz on label page (virt=296):>);
   writelist(489,9,52.0,<:rel nrze on label page (virt=296):>);
   writelist(490,6,1.0,<:rel test on kill page (virt=244):>);
   writelist(491,5,46.0,<:rel clock on general print page (virt=162):>);
   writelist(492,7,14.0,<:rel account job entry:>);
   writelist(493,8,69.0,<:rel high priority start (virt=426):>);
   writelist(494,5,32.0,<:rel time logged in on jobfile page:>);
   writelist(495,8,69.0,<:virt ref clean catalog:>);
   writelist(496,6,1.0,<:rel define on kill page (virt=244):>);
   writelist(497,13,4.0,<:rel priority in job descr on banker page:>);
   writelist(498,7,15,<:rel entry copy area:>);
   writelist(499,7,15,<:status, operation (from copy area):>);
   writelist(500,6,9.0,<:rel lookup rbprintername (virt=237):>);
   writelist(501,7,14.0,<:rel cpu - used (0.8 sec.) on job descr page:>);
   writelist(502,7,14.0,<:rel temp drum, disc on job descr page:>);
   writelist(503,7,14.0,<:rel stations on job descr page:>);
   writelist(504,7,14.0,<:rel top address on job descr page:>);
   writelist(505,7,14.0,<:rel first address on job descr page:>);
   writelist(506,6,9.0,<:rel stop (virt=237):>);
   writelist(507,5,33.0,<:segments in save buffer + jobfile:>);
   writelist(508,7,14.0,<:length (in segments) of job descr:>);
   writelist(509,9,53.0,<:length (in segments) of psjob mount code + mounttable + mount-action-table:>);
   writelist(510,6,72.0,<:length ( in segments) of request line page:>);
   writelist(511,7,14.0,<:(d123) rel first of telex device table on job descr page:>);
   writelist(512,7,14.0,<:(d124) rel of device kind in telex table on job descr page:>);
   writelist(513,7,14.0,<:(d125) rel of device name in telex table on job descr page:>);
   writelist(514,7,14.0,<:(d126) rel of telex no in telex table on job descr page:>);
   writelist(515,7,14.0,<:(d127) rel of answer back in telex table on job descr page:>);
   writelist(516,7,14.0,<:(d128) length of entry in telex table on job descr page:>);
   writelist(517,7,14.0,<:(d130) rel top of telex device table on job descr page:>);








\f


comment  sm 75.07.25                  textxref     page ...20...
;
  writelist(551,0,0,<::>);
  save(15,1000,0,0,<::>);
  close(z,true);
  close(zdef,true);
  close(udz,true);
end sorting in groups after use;



begin  comment  This block outputs the records in lists (one list accor-
                ding to each of the keys). The records are scanned
                and output on current output one list at a time;

  zone z(128,1,stderror);
  integer extern,file,relative,relnum,extnum,oldfile,oldext,i;
  real textref;
  integer field r;
  boolean field x,f;
  real field t;
  integer array fileconv(1:13);

  procedure getrecord(listenr);
  comment    This procedure reads and delivers the next record with 
             a specified key (read from 'list1').
             All records not fitting are neglected;
  value listenr;
  integer listenr;
  begin
    integer i;
    inrec6(z,8);
    for i:=z.r shift (-20) while i<>listenr and i<>15 do inrec6(z,8);
    extern:=signint(z.x);
    file:=signint(z.f);
    relative:=z.r extract 20;
    textref:=z.t;
  end getrecord;

  open(z,4,<:list1:>,0);
  x:=1; f:=2; r:=4; t:=8;
  for i:=1 step 1 until 13 do fileconv(i):=case i of
        (10,10,10,11,2,1,3,4,5,6,7,8,9);
  if offset<0 then offset:=0;


  write(out,<:<12><10><10>Definitions of externals:<10><10><10>:>);
  getrecord(7);
  for i:=0 while extern<551 do
  begin
    write(out,<<-ddd>, extern,<:  def: :>);
    if file=14 then
    begin
      filename(11);
      write(out,<:  page :>,<<dddd>,relative//10,case relative mod 10 +1 of
           (<:  :>,<:.a:>,<:.b:>,<:.c:>,<:.d:>,<:.e:>,
            <:.f:>,<:.g:>,<:.h:>,<:.i:>),<:   :>,string textref,<:<10><10>:>);
    end else
    begin
      filename(file);
      write(out,<<dddddd>,relative+offset,<:   :>,string textref,<:<10><10>:>);
    end;
    getrecord(7);
  end;
\f


comment   lkn   75.09.10                    textxref  page  ...21...
;



  write(out,<:<12><10><10>References to externals:<10><10><10>:>);
  setposition(z,0,0);
  oldext:=-25;
  getrecord(4);
  for i:=0 while extern<551 do
  begin
    if oldext<>extern then
    begin
      oldext:=extern;
      oldfile:=-1;
      write(out,<:<10><10>:>,<<-ddd>, extern,<:   :>, string textref);
    end;
    if oldfile<>file then
    begin
      write(out,<:<10>        :>);
      filename(file);
      oldfile:=file;
      relnum:=0;
    end;
    if relnum=8 then
    begin
      write(out,<:<10>                   :>);
      relnum:=0;
    end;
    write(out,<<dddddd>, relative+offset);
    relnum:=relnum+1;
    getrecord(4);
  end;


  write(out,<:<12><10><10>Defined, unreferenced externals:<10><10><10>:>);
  setposition(z,0,0);
  getrecord(3);
  for i:=0 while extern<551 do
  begin
    write(out,<<-ddd>, extern,<:  def: :>);
    filename(file);
    write(out,<<dddddd>, relative+offset,<:   :>,string textref,<:<10>:>);
    getrecord(3);
  end;


  write(out,<:<12><10><10>Named, unused externals:<10><10><10>:>);
  setposition(z,0,0);
  getrecord(5);
  for i:=0 while extern<551 do
  begin
    write(out,<<-ddd>,extern,<: named: :>);
    filename(fileconv(file));
    write(out,<: page: :>,<<ddd>, relative//10,case relative mod 10 +1 of
         (<:  :>,<:.a:>,<:.b:>,<:.c:>,<:.d:>,<:.e:>,<:.f:>,
          <:.g:>,<:.h:>,<:.i:>),<:   :>,string textref,<:<10><10>:>);
    getrecord(5);
  end;
\f


comment   lkn   75.09.10                    textxref  page  ...22...
;


  write(out,<:<12><10><10>Unused externals:<10><10><10>:>);
  setposition(z,0,0);
  extnum:=0;
  getrecord(0);
  for i:=0 while extern<551 do
  begin
    if extnum=10 then
    begin
      outchar(out,10);
      extnum:=0;
    end;
    write(out,<<-ddddd>,extern);
    extnum:=extnum+1;
    getrecord(0);
  end;


  write(out,<:<12><10><10>Used externals, not named:<10><10><10>:>);
  setposition(z,0,0);
  extnum:=0;
  oldext:=-25;
  getrecord(1);
  for i:=0 while extern<551 do
  begin
    if extern<>oldext then
    begin
      oldext:=extern;
      if extnum=10 then
      begin
        outchar(out,10);
        extnum:=0;
      end;
      write(out,<<-ddddd>,extern);
      extnum:=extnum+1;
    end;
    getrecord(1);
  end;


  write(out,<:<12><10><10>Referenced, undefined externals:<10><10><10>:>);
  setposition(z,0,0);
  getrecord(2);
  oldext:=-25;
  for i:=0 while extern<551 do
  begin
    if extern<>oldext then
    begin
      oldext:=extern;
      write(out,<<-ddd>, extern);
      write(out,<:   :>,string textref,<:<10>:>);
      getrecord(2);
    end;
  end;


  write(out,<:<12><10><10>Multiply defined externals:<10><10><10>:>);
  setposition(z,0,0);
  getrecord(6);
  for i:=0 while extern<551 do
  begin
    write(out,<:<10>:>,<<-ddd>,extern);
    write(out,<:   :>,string textref);
    getrecord(6);
  end;
  outchar(out,12);

end;
end;
 
endprog:
end;

▶EOF◀