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

⟦d65f50a24⟧ TextFile

    Length: 60000 (0xea60)
    Types: TextFile
    Notes: flxfile
    Names: »s28101:1.textxref    main  «, »textxref    main  «

Derivation

└─⟦2c579b2cd⟧ Bits:30004129/s28101.imd SW8101/2 BOSS v.2 rel. 2.0
    └─⟦4fb120d20⟧ 
        └─⟦this⟧ »s28101:1.textxref    main  « 

TextFile

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

begin comment program for examination of externals in bossfiles;
message extxref versionid:    85 05 20, 10;
<* program call: extxref list.<select>
    <select>= 'all': all lists printed
    <select>= abcd : a number, where a,b,c and d are digits.
              a=1  : definition list printed.
              b=1  : reference list printed.
              c=1  : 7 small lists printed.
              d=1  : cross reference list printed.
    default (no <select>) is <select>:= 11;
*>
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);
integer array fileconv(0:14); <* fileconv is used to convert fileno's 
            from no. used in call of proc writelist
             to  no. used in call of proc filename *>
integer totrefs, totdefs, listselect;
real array ra(1:2);
integer field w1,w2,w3;
boolean field hw1,hw2;
real    field r5;

w1:=2; w2:=4; w3:=6;
hw1:=1; hw2:=2;
r5:=10;
for i:= 0 step 1 until 14 do fileconv(i):= case (i+1) of
    (10,10,10,10,11,2,1,3,4,5,6,7,8,9,12);
if system(4,2,ra)=0 then listselect:= 11
else
if ra(1)=real<:all:> then listselect:= 111111
else listselect:= ra(1);

\f


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

begin
zone infile(40*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:5);
   integer i;
   boolean ok;
   zone z(128,1,stderror);
   tail(2):=1;
   ok:=true;

   for i:=1 step 1 until 5 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,36);  comment the size of the 5 areas used;
      open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>,<:extname:>),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 5 do
   if status(i)=0 then
   begin
      open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>,<:extname:>),0);
      monitor(48,z,0,tail);  comment remove entry;
      close(z,true);
   end
 
   else write(out,<:<10>:>, case i of (<:externals::>,<:reserve  ::>,<:extdef   ::>,
                                       <:list1    ::>,<:extname  ::>),
                  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=10 then outres(extern, getword(abs_ext-2), 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);
totrefs:= extused;
totdefs:= extdefined;

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;
\f



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


begin

<*  block level 2. covers rest of program *>

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



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   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,extname(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 extract 20);
    udz.t:=real text;
  end save;

  procedure central(page,type);    value page,type;
  real page;
  integer type;
  begin
  <*output a special name record for def and re in central.
    format: word1: external no  (see also writelist)
            word2: type. 101=defin in central, 102=ref in central.
            word3: page ref
         word 4-5: =<::>
  *>
  outrec6(extname,10);
  extname.w1:= xglob;
  extname.w2:= type+100;
  extname.w3:= round(page*10);
  extname.r5:= real<::>;
  end procedure central;
 \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;
    <* one name record produced for every call of writelist.
       format:   (see also proc central)
       word   1: external no
       word   2: filename (number, 1-13)
       word   3: page-reference (page*10 + subpage )
       word 4-5: text reference
    *>
    outrec6(extname,10);
    extname.w1:= xname;
    extname.w2:= filname;
    extname.w3:= round(relname*10);
    extname.r5:= real explan;
newext:
    state:=1;
    xglob:=xglob+1;
    if xglob>550 then goto afterlast;

\f



comment   lkn  75.09.10                  textxref     page ...10...
;


    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;
    
    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);
  open(extname,4,<:extname:>,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(-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:>);
         central(33.0,1);
   writelist(1,4,33.0,<:send and wait:>);
         central(33.0,1);
   writelist(2,4,33.0,<:send and wait fast:>);
         central(33.0,1);
   writelist(3,4,33.0,<:lock:>);
         central(33.0,1);
   writelist(4,4,33.0,<:open:>);
         central(33.0,1);
   writelist(5,4,33.0,<:lock chained:>);
         central(33.0,1);
   writelist(6,4,33.0,<:open chained:>);
         central(33.0,1);
   writelist(7,4,33.0,<:get pages:>);
         central(33.0,1);
   writelist(8,4,33.0,<:page jump:>);
         central(33.0,1);
   writelist(9,4,33.0,<:send and wait slow:>);
         central(33.0,1);
   writelist(10,4,37.0, <:large reservations in semafore table:>);
               central(41.0,1);
   writelist(11,4,33.0,<:clear core:>);
          central(33.0,1);
   writelist(12,4,33.0,<:reserve virt:>);
          central(33.0,1);
   writelist(13,4,33.0,<: 1.pass: dummy 2.pass: move virt:>);
          central(33.0,1);
          central(41.0,1);
   writelist(14,4,33.0,<: 1.pass: dummy 2.pass: simulate lock:>);
          central(33.0,1);
          central(41.0,1);
   writelist(15,4,33.1,<:end init:>);
          central(33.1,1);
   writelist(16,4,42.0,<:number of core places for bosspages (=i120):>);
          central(42.0,1);
   writelist(17,4,33.1,<:first core place (abs addr):>);
          central(33.1,1);
   writelist(18,4,35.0,<:reservation in coruno table:>);
          central(35.0,1);
          central(36.0,1);
          central(43.0,2);
   writelist(19,4,35.0,<:reservation in semaphore table:>);
          central(35.0,1);
          central(36.0,1);
          central(43.0,2);

\f



comment     chd 82.04.29                    textxref       page ...11a...
;


   writelist(20,4,35.0,<:reservation in sender table:>);
          central(35.0,1);
          central(36.0,1);
          central(42.0,2);
   writelist(21,4,33.1,<:coruno output:>);
          central(33.1,1);
   writelist(22,6,64.0,<:first terminal output:>);
   writelist(23,4,33.1,<:name of main console:>);
          central(33.1,1);
   writelist(24,4,33.0,<: 1.pass: dummy 2.pass: put in active chain:>);
          central(33.0,1);
          central(41.0,1);
   writelist(25,4,33.1,<:call:>);
          central(33.1,1);
   writelist(26,4,33.1,<:current coroutine:>);
          central(33.1,1);
          central(33.1,1);
   writelist(28,4,33.1,<:boss start time address:>);
          central(33.1,1);
   writelist(29,4,33.1,<:number of work core places exclusively for boss pages (=i116, first core place for jobs:>);
          central(33.1,1);
   writelist(30,4,33.1,<:stop and wait:>);
          central(33.1,1);
   writelist(31,4,33.1,<:init alarm:>);
          central(33.1,1);
   writelist(32,4,33.1,<:prepare access:>);
          central(33.1,1);
   writelist(33,4,33.1,<:terminate access:>);
          central(33.1,1);
   writelist(34,4,33.1,<:w0 call:>);
          central(33.1,1);
   writelist(35,4,33.1,<:wait answer:>);
          central(33.1,1);
   writelist(36,4,33.1,<:search limit:>);
          central(33.1,1);
   writelist(37,4,33.1,<:testoutput switch:>);
          central(33.1,1);
   writelist(38,4,33.1,<:current segment in bosstest:>);
          central(33.1,1);
   writelist(39,4,33.1,<:name table address of bosstest:>);
          central(33.1,1);
   writelist(40,4,33.1,<:set externals:>);
          central(33.1,1);
\f


comment   lkn   75.09.10                    textxref  page ...12...
;
   writelist(41,4,42.1,<:no of core places for jobs - inclusive shared places:>);
   writelist(42,4,42.1,<:top core place:>);
   writelist(43,13,17.1,<:start address of core picture:>);
   writelist(44,13,17.1,<:size of core picture:>);
   writelist(45,6,76.0,<:virtual display core:>);
   writelist(46,6,76.0,<:relative display core (virt.45):>);

   writelist(51,6,72.0,<:address of request queue semaphore:>);
   writelist(52,6,72.0,<:address of request free semaphore:>);
          central(41.0,1);
   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,4,33.0,<:process description address of boss:>);
   writelist(67,13,4.0,<:banker queue:>);
   writelist(72,10,19.0,<:card reader free operation queue :>);
   writelist(74,12,10.0,<:catalock semafor:>);
   writelist(75,12,25.0,<:reserve usercat semafor:>);
   writelist(76,7,14.0,<:first psjob answer semafor:>);
   writelist(77,9,52.0,<:rewinder queue:>);
   writelist(78,11,42.0,<:banker access semafor (binary):>);
   writelist(79,6,44.0,<:kit change queue:>);
   writelist(80,11,15.0,<:first printer queue semafor:>);
   writelist(81,6,64.0,<:terminal input semaphore:>);
   writelist(82,13,17.1,<:current core picture (rel d53 on banker var. page):>);
   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):>);
          central(43.0,1);
   writelist(120,5,47.0,<:rel entry, delete command:>);
   writelist(121,5,33.0,<:start line, delete command:>);
   writelist(122,5,33.0,<:end line, delete command:>);
   writelist(123,5,33.0,<:increment line, delete command:>);
   writelist(124,5,33.0,<:rel entry of delete command in comio:>);
   writelist(125,5,33.0,<:verify after replace:>);
   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, d88):>);
   writelist(135,5,33.0,<:autoline current line. d86:>);
   writelist(136,5,33.0,<:autoline line increment, d87:>);
   writelist(137,6,44.0,<:rel hotnews (virt=247):>);
   writelist(138,6,44.0,<:abs (virt) hotnews request line address:>);
   writelist(140,12,60.0,<:virt remote batch codepage:>);
   writelist(141,12,60.0,<:rel linkup remote (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 lookup process(or host) (link) (virt=140):>);
   writelist(147,11,12,<:rel entry display convert (virt=385):>);
   writelist(148,14,4.0,<:reader device number (bossreader<12+jobreader) (rel d131 on jobdescr.page):>);
   writelist(149,14,4.0,<:reader table address relative to (reader) operation (d142=d141-d87 on jobdescr.page):>);
   writelist(150,6,64.0,<:start of terminal area (=start of main console buffer):>);
   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 catalog 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(171,5,33.0,<:virt.address of work page(d13 on job file page) used by display core command:>);
   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 (rel d50 on jobfile page):>);
   writelist(176,5,32.0,<:job in core (rel d51 on jobfile page):>);
   writelist(177,5,32.0,<:job description page (rel d36 on jobfile page):>);
   writelist(178,5,32.0,<:first address of terminal buffer (rel d42 on jobfile page):>);
   writelist(179,5,32.0,<:rel d6 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 (rel d52 on jobfile page):>);
   writelist(181,5,32.0,<:rest room on page (rel d53 on jobfile page):>);
   writelist(182,5,32.0,<:job buffer index (rel d54 on jobfile page):>);
   writelist(183,5,32.0,<:get current virt buffer address (rel d55 on jobfile page):>);
   writelist(184,5,32.0,<:message address (rel d56 on jobfile page):>);
   writelist(185,5,32.0,<:first of job (even) (rel d57 on jobfile page):>);
   writelist(186,5,32.0,<:top of job () (rel d58 on jobfile page):>);
   writelist(187,5,32.0,<:base store rel (rel d19 on jobfile page):>);
   writelist(188,5,32.0,<:abs on page (rel d18 on jobfile page):>);
   writelist(189,5,32.0,<:work page virt address (rel d16 on jobfile page):>);
   writelist(190,5,32.0,<:line got - logical status at alarm (rel d33 on jobfile page):>);
   writelist(191,5,32.0,<:rest room on page (rel d59 on jobfile page):>);
   writelist(192,5,32.0,<:job buffer index (rel d60 on jobfile page):>);
   writelist(193,5,32.0,<:virt buffer (rel d61 on jobfile page):>);
   writelist(194,5,32.0,<:first buffer byte (rel d62 on jobfile page):>);
   writelist(195,5,32.0,<:name of super buffer area (rel d63 on jobfile page):>);
   writelist(196,5,32.0,<:length of super buffer (no of segm. * 512 - 512) (rel d64 on jobfile page):>);
   writelist(197,5,32.0,<:terminal full (rel d65 on jobfile page):>);
   writelist(198,5,32.0,<:prog state (and answer rel) (rel d66 on jobfile page):>);
   writelist(199,5,32.0,<:current virtual address of card buffer (rel d67 on jobfile page):>);
   writelist(200,5,32.0,<:last received status of card reader (rel d68 on jobfile page):>);
   writelist(201,5,32.0,<:card length (rel d69 on jobfile page):>);
   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 (rel d41 on jobfile page) = external 300:>);
   writelist(218,5,32.0,<:basis file name (rel d42 on 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 (rel d38 on jobfile page):>);
   writelist(222,5,32.0,<:rel terminal sender descr. addr. (rel d40 on jobfile page):>);
   writelist(223,5,32.0,<:rel attention semaphore (rel d39 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 (rel d44 on jobfile page):>);
   writelist(227,5,32.0,<:rel std interval (rel d45 on jobfile page):>);
   writelist(228,5,32.0,<:rel of first correction segm. (rel d15+2 on jobfile page):>);
   writelist(229,5,46.0,<:rel general print (virt=162):>);
   writelist(230,5,32.0,<:rel next file index (rel d32 on jobfile page):>);
   writelist(231,5,32.0,<:rel segm. number in basis file (rel d21 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 (rel d70 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,  254, 255, 256, 258, 295, 391, 392, 490, 528):>);
   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,<:return for next line etc. (rel d25 on jobfile page):>);
   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(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(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,18.0,<:rel job size (=j41 in bankers job description):>);
   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 - (rel d2 on jobfile page):>);
   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,5,33.0,<:initial command state (g20 in tterm1):>);
   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 (rel d71 on jobfile page):>);
   writelist(300,5,32.0,<:rel terminal name (rel d41 on jobfile page) =external 217:>);
   writelist(301,5,32.0,<:rel next byte (rel d72 on jobfile page):>);
   writelist(302,5,32.0,<:rel buf byte (rel d72+2 on jobfile page):>);
   writelist(303,5,32.0,<:rel virt byte (rel d73 on jobfile page):>);
   writelist(304,5,32.0,<:rel appetite (rel d73+2 on jobfile page):>);
   writelist(305,5,32.0,<:rel out bytes (rel d74 on jobfile page):>);
   writelist(306,5,32.0,<:rel terminal input semaphore (rel d80 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 d82 on jobfile page: cards free jobcontrolled:>);
   writelist(368,5,32.0,<:rel d83 on jobfile page: cards full jobcontrolled:>);
   writelist(369,5,32.0,<:rel d84 on jobfile page: first virt card jobcontrolled:>);
   writelist(370,5,32.0,<:rel d85 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,-99.0,<:remote printer wait semaphore:>);
   writelist(378,11,-99.0,<:remote  convert queue:>);
   writelist(379,11,-99.0,<:paper manipulation (binary semaphore):>);
   writelist(380,11,-99.0,<:paper 0 queue semafor address:>);
   writelist(381,11,-99.0,<:std printer wait:>);
   writelist(382,11,-99.0,<:converts free semafor:>);
   writelist(383,11,-99.0,<:virt spool buffer start:>);
   writelist(384,11,-99.0,<:virt spool buffer top:>);
   writelist(385,11,-99.0,<:virt codepage 70 (next convert):>);
   writelist(386,11,-99.0,<:virt codepage 73 (printing):>);
   writelist(387,11,-99.0,<:virt codepage 71 (next action):>);
   writelist(388,11,-99.0,<:job controlled convert operation semafor:>);
   writelist(389,11,-99.0,<:virt codepage 72 (triangle printing):>);
   writelist(390,11,-99.0,<:convert answer semafore:>);
   writelist(391,11,-99.0,<:rel entry route command (virt=244):>);
   writelist(392,11,-99.0,<:rel entry cancel routing command (virt=244):>);
   writelist(393,11,12.0,<:current convert ident:>);
   writelist(394,11,12.0,<:parking queue sem addr:>);
   writelist(395,11,12.0,<:printer busy queue sem addr:>);
   writelist(396,11,12.0,<:rel select command (virt=385):>);
   writelist(397,11,12.0,<:rel reject command (virt=385):>);
\f


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

   writelist(400,7,13.0,<:virt codepage 13 (c.p.3 in tjobstart):>);
   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(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,<:hostdescr.subhostno (rel d119 on jobdescr. page):>);
   writelist(424,7,11.0,<:hostdescr, last of doubleword (rel d122 on jobdescr. page):>);
   writelist(425,7,11.0,<:printerdescr, last of doubleword (rel d121 on jobdescr. 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,<: next store in job input area (rel d81 on jobfile page):>);
   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) (rel d75 on jobfile page):>);
   writelist(447,5,32.0,<:tape reader (job): start rel (rel d76 on jobfile page):>);
   writelist(448,5,32.0,<:tape reader (job): curr. virt addr. of tape buffer (rel d77 on jobfile page):>);
   writelist(449,5,32.0,<:tape reader (job): last received status of tape reader (rel d73 on jobfile page):>);
   writelist(450,5,32.0,<:card reader (job): start rel of input in buffer (rel d66+1 on jobfile page):>);
   writelist(451,7,13.0,<:virt codepage 12 (c.p.2 in tjobstart):>);
   writelist(452,7,14.0,<:rel size specification (virt=400, codepage 13, tjobstart):>);
   writelist(453,7,14.0,<:rel internals specification (virt=400):>);
   writelist(454,7,14.0,<:rel program specification (virt=400):>);
   writelist(455,7,14.0,<:rel buf specification (virt=400):>);
   writelist(456,7,14.0,<:rel areas specification (virt=400):>);
   writelist(457,7,14.0,<:rel key specification (virt=400):>);
   writelist(458,7,14.0,<:rel perm specification (virt=400):>);
   writelist(459,7,14.0,<:rel temp specification (virt=400):>);
\f


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

   writelist(460,7,14.0,<:rel latest specification (virt=400):>);
   writelist(461,7,14.0,<:rel mounts specification (virt=400):>);
   writelist(462,7,14.0,<:rel output specification (virt=400):>);
   writelist(463,7,14.0,<:rel time specification (virt=400):>);
   writelist(464,7,14.0,<:rel account specification (virt=400):>);
   writelist(465,7,14.0,<:rel stations specification (virt=400):>);
   writelist(466,7,14.0,<:rel device specification (virt=473):>);
   writelist(467,7,14.0,<:rel tapes specification (virt=400):>);
   writelist(468,7,14.0,<:rel cbuf specification (virt=400):>);
   writelist(469,7,14.0,<:rel suspend specification (virt=400):>);
   writelist(470,7,14.0,<:rel proc set bs claim (virt=451):>);
   writelist(471,7,13.0,<:virt codepage 15 (c.p.5 in tjobstart):>);
   writelist(472,7,13.0,<:virt codepage 11 (c.p.1 in tjobstart):>);
   writelist(473,7,13.0,<:virt codepage 14 (c.p.4 in tjobstart):>);
   writelist(474,5,32.0,<: current paper type (rel d79 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,<: time logged in (rel d43 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):>);

\f



comment   chd  82.04.29              textxref             page ...19a...
;


   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 (initially time) address on job descr page:>);
   writelist(505,7,14.0,<:rel first address (initially size) on job descr page:>);
   writelist(506,6,9.0,<:rel stop (virt=237):>);
   writelist(507,5,33.0,<:segments in save buffer + jobfile:>);
           central(41.0,2);
   writelist(508,7,14.0,<:length (in segments) of job descr:>);
           central(41.0,2);
   writelist(509,9,53.0,<:length (in segments) of psjob mount code + mounttable + mount-action-table:>);
           central(41.0,2);
   writelist(510,6,72.0,<:length ( in segments) of request line page:>);
           central(41.0,2);
   writelist(518,5,3.0,<:reader free semafor (rel d90 on jobfile page):>);
   writelist(519,5,3.0,<:reader full semafor (rel d91 on jobfile page):>);
   writelist(520,5,3.0,<:first virtual buffer (rel d92 on jobfile page):>);
   writelist(521,5,3.0,<:top virtual buffer (rel d93 on jobfile page):>);
   writelist(522,13,-99.0,<:arrival time (j10 in bankers psjob description):>);
   writelist(523,14,1.0,<:absref of perm core for hostmessages (rel d146 on jobdescr. page):>);
   writelist(524,14,3.0,<:priority (rel d132 on jobdescr. page):>);
   writelist(525,14,4.0,<:total net tim (rel d2 on jobdescr. page):>);
   writelist(526,7,-99.0,<:link specification (rel c70, codepage 13, tjobstart, virt=400):>);
   writelist(527,14,3.0,<:links (rel d148 on jobdescr. page):>);
   writelist(528,6,-99.0,<:call command (rel c15, codepage 100, tterm2, virt=244):>);
   writelist(529,14,2.0,<:project base (rel d26 on jobdescr. page):>);
   writelist(530,11,-99.0,<:virt papertable page:>);
   writelist(531,11,-99.0,<:virt printertable page:>);








\f


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



comment   chd 82.04.29                           textxref  page ...20a...
;

if (listselect//10) mod 10 <>0 then
begin comment writing of reservations;

procedure getname(x);    value x;
integer x;  <* x is external number *>
begin
  setposition(extname,0,0);
  inrec6(extname,10);
  while x<>extname.w1 and extname.w1<551 do inrec6(extname,10);
  write(out,<:<10><10>:>, <<ddd>, x, <:__________named:_:>,
        string extname.r5);
end procedure getname;

integer field ext,res,fil,rel;
zone inres(reservations shift (-6) add 1 shift 7,1,stderror);
zone extname(128,1,stderror);
integer i,minext,lastext,fileno,ressum, totsum;

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

write(out,<:<12><10>__________***_list of reservations_***:>);
write(out,<:____total no of reservations::>, reservations);
write(out,<:<10><10>ext_file_____reladr:_+res=__in<95>file___in<95>ext:>);
write(out,<:<10>:>, false add 45, 44);

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;
\f



comment    chd 82.04.29                       textxref    page ...20b...
;


getname(minext);
file_no:= -1;
tot_sum:= 0;
ressum:= 0;
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;
      write(out,<:<10>   :>);
      filename(fileno);
      end
      else
      write(out,<:<10>______________:>);
    totsum:= totsum + in_res.res;
    ressum:=ressum+in_res.res;
    write(out,<<ddddd>,in_res.rel,<:::>,<<+dddd>,in_res.res,<:=:>,<<ddddddddd>,res_sum,totsum);
    end;
  end for;
lastext:=minext;
goto next_res;
no_more_res:
close(inres,true);
close(extname,true);

end  printing reservations;


\f



comment     chd 82.04.29                         textxref   page ...20c...
;


if listselect mod 10 <>0 then
begin
  <* this block is used for printing the cross reference list
     the files extname, extdef, externals  are scanned and merged,
     and for every external is printed
       name (record)
       definitions (records)
       references (records)
     in the order mentioned.
  *>

  procedure xhead;
  begin
    <* print external number, keeping track of unused external no's.
       is only called when there is something to write on an external.
    *>
    if lastused < xglob-1 then  <*first unused*>
      write(out,<:<10><10>:>,<<-ddd>,lastused+1,<::  _____unused:>);

    if lastused = xglob-4 then  <*second unused out of 3*>
      write(out,<:<10>:>,<<-ddd>,lastused+2,<::  _____unused:>);

    if lastused < xglob-4 then  <*more than 3 unused*>
      write(out,<:<10> .....:>);

    if lastused < xglob-2 then  <*last unused*>
      write(out,<:<10>:>,<<-ddd>,xglob-1,<::  _____unused:>);

    if lastused < xglob and xglob<551 then  <*current*>
      write(out,<:<10><10>:>,<<-ddd>,xglob,<::_______:>);

    lastused:= xglob;
  end procedure xhead;

  zone extname, extdef, externals(128,1,stderror);
  integer xglob, xname, xdef, xref, lastused, refno, oldf, fref;

  open(extname,4,<:extname:>,0);
  open(extdef ,4,<:extdef:> ,0);
  open(externals,4,<:externals:>,0);

\f



comment     chd 82.04.29                      textxref  page ...20d...
;


  write(out, <:<12><10><10>________****  cross reference list  ***<10><10><10>:>);
  inrec6(extname,10);
  inrec6(extdef,4);    totdefs:= totdefs-1;
  inrec6(externals,4); totrefs:= totrefs-1;
  lastused:= -51;

  for xglob:= -50 step 1 until 550 do
  begin

    <*take name record*>
    while extname.w1 = xglob do
    begin
      xname:= extname.w1;
      xhead;
      if extname.w2<100 then
      begin <*normal name record*>
        write(out, string(extname.r5),<:<10>_____named::>);
        filename(fileconv(extname.w2));
      end
      else <*special record for ref or def in central *>
        write(out, if extname.w2=101 then <:<10>___c-defin::>
              else <:<10>_____c-ref::>, <:_central___:>);
      write(out,<:page:>,<<-ddd>,extname.w3//10,
        case (extname.w3 mod 10 +1) of
        (<:__:>,<:.a:>,<:.b:>,<:.c:>,<:.d:>,<:.e:>,<:.f:>,<:.g:>,<:.h:>,<:.i:>,<:.j:>));
      inrec6(extname,10);
    end;

    <*take definition records*>
    while signint(extdef.hw1) = xglob do
    begin
      xdef:= signint(extdef.hw1);
      xhead;
      write(out,<:<10>_____defin::>); <*one def on each line*>
      filename(signint(extdef.hw2));
      write(out,<<-ddddddd>,extdef.w2);
      if totdefs>0 then
      begin
        inrec6(extdef,4);
        totdefs:= totdefs-1;
      end
      else extdef.w1:= (-1) shift(-1); <*big number, makes it stop*>
    end;

\f



comment     chd 82.04.29                     textxref   page ...20f...
;


    <*take reference records*>
    refno:= oldf:= 0;
    while signint(externals.hw1) = xglob do
    begin
      xref:= signint(externals.hw1);
      fref:= signint(externals.hw2);
      xhead;
      if fref <> oldf then
      begin <*new file*>
        write(out,<:<10>_______ref::>);
        filename(fref);
        oldf:= fref;
        refno:= 0;
      end;
      refno:= refno+1;
      if refno>8 then
      begin
        refno:= 1;
        write(out,<:<10>:>, false add 32, 22);
      end;
      write(out,<<-ddddddd>,externals.w2);
      if totrefs>0 then
      begin
        inrec6(externals,4);
        totrefs:= totrefs-1;
      end
      else externals.w1:= (-1) shift(-1);
    end;

  end loop xglob;

  xglob:=551;
  xhead;
  close(extname,true);
  close(extdef ,true);
  close(externals,true);

end block for cross reference;


\f



comment     sm 75.07.25                         textxref   page ...20g...
;




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;

  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;
  if offset<0 then offset:=0;


  if (listselect//1000) mod 10 <> 0 then
  begin
  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;
  end selected;
\f


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



  if (listselect//100) mod 10 <> 0 then
  begin
  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;
  end selected;



\f



comment chd 82.04.29                        textxref     page ...21a...
;


  if (listselect//10) mod 10 <> 0 then

  begin   <* select 6 small lists *>

  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><10>:>);
    getrecord(3);
  end;


  write(out,<:<12><10><10>Named, undefined, unreferenced 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 (not named, not defined, not referenced):<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 (but either defined or referenced):<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);
  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;
     getrecord(2);
  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  6 small lists selected;

end;
end;
 
endprog:
end;

▶EOF◀