|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 60000 (0xea60)
Types: TextFile
Notes: flxfile
Names: »s28101:1.textxref main «, »textxref main «
└─⟦2c579b2cd⟧ Bits:30004129/s28101.imd SW8101/2 BOSS v.2 rel. 2.0
└─⟦4fb120d20⟧
└─⟦this⟧ »s28101:1.textxref main «
; 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◀