|
|
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: 48384 (0xbd00)
Types: TextFile
Names: »textxref«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦0b92c64d5⟧ »ctb«
└─⟦this⟧
; sm 75.07.25 textxref page ...1...
;
(extxref=set 1 disc
scope user extxref
extxref=algol
)
begin comment program for examination of externals in bossfiles;
message extxref versionid: 76 10 08, 7;
integer procedure sign_int(byte);
value byte;
boolean byte;
begin
comment extends a 12-bit signed integer to the corresponding
24-bit signed integer;
sign_int:=(if byte shift (-11) then (-1) shift 12 else 0)
add (byte extract 12);
end sign_int;
integer extused, reservations, extdefined, offset,i;
integer array versionid(1:2,1:9);
\f
comment sm 75.07.25 textxref page ...2...
;
begin
zone infile(25*128,1,stderror);
zone res_out,def_out,out_list(128,1,stderror);
comment description of the zones:
infile used for input of the 9 binary boss-files
res_out used for output of the reservations
(see: proc out_res)
out_list used for output of the list of references to externals
;
integer file_no,rel_ext,byte_no,abs_ext,extern,reserve;
comment description of the variables:
file_no the number of the current input-file
rel_ext the position (relative to the current entrance in the
external list) where an external is referenced
byte_no the bytenumber (in the input-file) of the current
entrance in the external list
abs_ext the absolute position (relative to the input-file)
where an external is referenced
extern the current external number
reserve the size of the reservation
;
integer procedure getword(byteno);
value byteno;
integer byteno;
begin comment gets the value of the word which consists of the bytes with numbers
(byteno-1,byteno)
in the input-file;
getword:=getbyte(byteno-1) shift 12 + getbyte(byteno) extract 12;
end;
integer procedure getbyte(byteno);
value byteno;
integer byteno;
begin comment gets the value of the byte with the number
byteno
in the input-file;
boolean field byte;
byte:=byteno;
getbyte:=sign_int(infile.byte);
end getbyte;
\f
comment sm 75.07.25 textxref page ...3...
;
procedure out_ext(extern,relative);
value extern,relative;
integer extern,relative;
begin comment outputs one record with the following fields:
1. byte: extern
2. byte: fileno
2. word: relative
and counts them in the global variable
ext_used
;
integer field rel,ext_and_fil;
rel:=4;
extandfil:=2;
outrec6(outlist,4);
outlist.rel:=relative;
outlist.extandfil:=extern shift 12 add fileno;
extused:=extused + 1;
end outext;
procedure out_ext_def(extern,relative);
value extern,relative;
integer extern,relative;
begin comment outputs one record with the following fields:
1. byte: extern
2. byte: fileno
2. word: relative
and counts them in the global variable extdefined;
integer field ext,rel;
ext:=2;
rel:=4;
outrec6(defout,4);
defout.ext:=extern shift 12 add fileno;
defout.rel:=relative-4;
extdefined:=extdefined+1;
end outextdef;
procedure out_res(extern,reserve,relative);
value extern,reserve,relative;
integer extern,reserve,relative;
begin comment outputs the table reservations with the following format
1. word: extern
2. word: reserve
3. word: fileno
4. word: relative
;
integer field ext,res,fil,rel;
ext:=2;
res:=4;
fil:=6;
rel:=8;
outrec6(resout,8);
resout.ext:=extern;
resout.res:=reserve;
resout.fil:=fileno;
resout.rel:=relative;
reservations:=reservations + 1;
end outres;
\f
comment sm 75.07.25 textxref page ...4...
;
integer array tail(1:10);
integer i;
begin
comment in this block the 4 areas that are used in the program are created.
if an error occurs, an errormessage is written, and the run is terminated;
integer array status(1:4);
integer i;
boolean ok;
zone z(128,1,stderror);
tail(2):=1;
ok:=true;
for i:=1 step 1 until 4 do
begin
comment the areas are created. status tells if everything is ok or not;
status(i):=0;
tail(1):=case i of (36,36,36,36); comment the size of the 4 areas used;
open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>),0);
status(i):=monitor(40,z,0,tail); comment create entry;
if status(i)<>0 then ok:=false;
close(z,true);
end;
if -,ok then
begin
comment the areas that have been created during this run, are deleted;
write(out,<:<10>run terminated. error in creation of:>,
<: backing storage area.:>);
for i:=1 step 1 until 4 do
if status(i)=0 then
begin
open(z,4,case i of (<:externals:>,<:reserve:>,<:extdef:>,<:list1:>),0);
monitor(48,z,0,tail); comment remove entry;
close(z,true);
end
else write(out,<:<10>:>, case i of (<:externals::>,<:reserve ::>,<:extdef ::>,
<:list1 ::>),
case status(i) of (<::>,<: catalog i/o error.:>,
<: name conflict.:>,<: claims exceeded.:>,
<: catalog base does not allow creation of entry.:>,
<: name format illegal.:>));
goto endprog;
end;
end;
\f
comment sm 75.07.25 textxref page ...5...
;
open(out_list,4,<:externals:>,0);
open(res_out,4,<:reserve:>,0);
open(defout,4,<:extdef:>,0);
offset:=0;
extdefined:=0;
extused:=0;
reservations:=0;
for fileno:=1 step 1 until 9 do
begin
open(infile,4,case fileno of (<:bterm2:>,<:bterm1:>,<:bjobstart:>,<:bjob:>,
<:bmount:>,<:bread:>,<:bprinter:>,<:bprocs:>,<:bbanker:>),0);
monitor(42)lookup_entry:(infile,0,tail);
inrec6(infile,tail(10));
versionid(1,fileno):=getword(6); versionid(2,fileno):=getword(8);
byteno:=10; comment the external list starts in byte 9 and 10 of the input file;
for relext:=getword(byteno) while relext <> 0 do
begin
if relext < 0 then
byteno:=byteno-relext
else
begin
abs_ext:=byte_no+rel_ext;
if abs_ext extract 1 = 1 then
begin comment abs_ext is uneven ;
abs_ext:=abs_ext - 1;
out_ext(getbyte(abs_ext),abs_ext-1);
end
else
begin
comment abs_ext is even;
extern:=getbyte(abs_ext);
out_ext(extern,abs_ext-2);
reserve:=getbyte(abs_ext-1);
if reserve > 0 then
out_res(extern,reserve,abs_ext-2);
if extern=40 then
begin comment after ext(40) (= reference to set-external-
procedure) follows a table (in word mode)
containing pairs of this format:
external value , external number.
last element of a table is ext(-1000);
absext:=absext+4;
for extern:=getword(absext) while extern>-1000 do
begin
outextdef(extern,absext);
absext:=absext+4;
end;
if offset<=0 then offset:=getword(absext-2)-absext+2;
end;
end;
byteno:=byteno+2;
end;
end;
close(infile,true);
end;
close(out_list,true);
close(defout,true);
close(res_out,true);
end;
\f
comment sm 75.07.25 textxref page ...6...
;
begin comment sorting of the externals;
zone z(ext_used shift (-7) add 1 shift 7,1,stderror);
comment the zone z is used for internal sorting of the external references;
integer i,j,k,m;
real temp;
procedure shellsort(maxext);
value maxext;
integer maxext;
begin
swoprec6(z,maxext*4);
for i:=1 step i until maxext do
m:=2*i-1;
for m:=m//2 while m <> 0 do
begin
k:=maxext-m;
for j:=1 step 1 until k do
begin
for i:=j step -m until 1 do
begin
if long z(i+m) >= long z(i) then
goto next_j;
temp:=z(i);
z(i):=z(i+m);
z(i+m):=temp;
end i;
next_j:
end j;
end m;
end shellsort;
open(z,4,<:externals:>,0);
shellsort(extused);
close(z,true);
open(z,4,<:extdef:>,0);
shellsort(extdefined);
close(z,true);
end sorting;
begin
procedure filename(filenumber);
value filenumber;
integer filenumber;
write(out,case filenumber of
(<: tterm2 :>,
<: tterm1 :>,
<: tjobstart :>,
<: tjob :>,
<: tmount :>,
<: tread :>,
<: tprinter :>,
<: tprocs :>,
<: tbanker :>,
<: :>,
<: central :>));
for i:=1 step 1 until 9 do
begin
filename(i);
write(out,<: :>,<<dd dd dd>,versionid(1,i),<<dddddddd>,versionid(2,i),<:<10>:>);
end;
\f
comment sm 75.07.25 textxref page ...7...
;
begin comment writing of reservations;
integer field ext,res,fil,rel;
zone inres(reservations shift (-6) add 1 shift 7,1,stderror);
integer i,minext,lastext,position,fileno,ressum;
open(in_res,4,<:reserve:>,0);
inrec6(in_res,reservations*8);
write(out,<:<12>List of reservations - number of reservations::>,reservations);
lastext:=-51;
next_res:
minext:=600;
for i:=1 step 1 until reservations do
begin
ext:=i*8-6;
fil:=ext+4;
if inres.ext > lastext then
begin
if inres.ext < minext then
begin
minext:=inres.ext;
file_no:=inres.fil;
end;
end;
end;
if minext=600 then goto no_more_res;
write(out,<:<10>:>,<<ddd>,minext);
filename(file_no);
ressum:=0; position:=1;
for i:=1 step 1 until reservations do
begin
rel:=i*8;
fil:=rel-2;
res:=rel-4;
ext:=rel-6;
if inres.ext = minext then
begin
if inres.fil > fileno then
begin
fileno:=inres.fil;
res_sum:=0; position:=1;
write(out,<:<10> :>);
filename(fileno);
end;
if position = 0 then
begin
position:=1;
write(out,<:<10>:>,false add 32,14);
end;
ressum:=ressum+in_res.res;
write(out,<<ddddd>,in_res.rel,<::+:>,<<dddd>,in_res.res,<:=:>,res_sum,<: :>);
position:=(position+1) mod 6 ;
end;
end for;
lastext:=minext;
goto next_res;
no_more_res: close(inres,true);
end;
\f
comment lkn 75.09.10 textxref page ...8...
;
begin comment In this section the externals are input from three lists
according to their use:
input from according to
file 'externals' references
file 'extdef' definitions
call of writelist namings
Here they are merged and output on a bs-file 'list1' as records
of this format:
byte 1: external number
byte 2: file number
word 2: key shift 20 add relative
word 3-4: textreference
The following keys are used:
0 unused external
1 used, not named
2 referenced, not defined
3 defined, not referenced
4 referenced
5 named unused
6 multiply defined
7 defined
15 stop key
;
integer xref,xdef,filref,fildef,relref,reldef,xglob,doubledef,i;
integer field r,xf;
boolean field x,f;
real field t;
zone z,zdef,udz(128,1,stderror);
procedure save(list,ext,fil,rel,text);
comment outputs records of merged externals on 'list1';
value list,ext,fil,rel;
integer list,ext,fil,rel;
string text;
begin
outrec6(udz,8);
udz.xf:=ext shift 12+fil;
udz.r:=list shift 20 add rel;
udz.t:=real text;
end save;
\f
comment lkn 75.09.10 textxref page ...9...
;
procedure writelist(xname,filname,relname,explan);
comment this procedure is called only to connect names to ex-
ternals. The very merging is going on here, but it is
stepping through all possible externals from -12 to 550
(according to a global variable xglob) independently of
the procedure calls - when there only is one call not
lower than 550;
value xname,filname,relname;
integer xname,filname;
real relname;
string explan;
begin
integer state,oldglob;
oldglob:=-50;
newext:
state:=1;
xglob:=xglob+1;
if xglob>550 then goto afterlast;
if xref=xglob then state:=state+1;
if xdef=xglob then state:=state+2;
if xname=xglob then state:=state+4;
newcase:
case state of
begin
save(0,xglob,0,0,<::>);
begin
save(1,xglob,0,0,<::>);
save(2,xglob,0,0,<::>);
save(4,xglob,filref,relref,<::>);
end;
begin
save(1,xglob,0,0,<::>);
save(3,xglob,fildef,reldef,<::>);
end;
begin
save(1,xglob,0,0,<::>);
save(4,xglob,filref,relref,<::>);
end;
save(5,xglob,filname,round(relname*10), explan);
begin
if xglob<>oldglob then
begin
if filname=4 then save(7,xglob,filname+10,round(relname*10),explan)
else save(2,xglob,0,0,explan);
oldglob:=xglob;
end;
save(4,xglob,filref,relref,explan);
end;
save(3,xglob,fildef,reldef,explan);
save(4,xglob,filref,relref,explan);
end;
if xref=xglob then
begin
if extused>0 then
begin
inrec6(z,4);
extused:=extused-1;
xref:=signint(z.x);
filref:=signint(z.f);
relref:=z.r;
end else xref:=1000;
if xref=xglob then goto newcase;
end;
\f
comment lkn 75.09.10 textxref page ...10...
;
if xdef=xglob then
begin
newdef:
save(7,xdef,fildef,reldef,if xdef=xname then explan else <::>);
if extdefined>0 then
begin
inrec6(zdef,4);
extdefined:=extdefined-1;
xdef:=signint(zdef.x);
fildef:=signint(zdef.f);
reldef:=zdef.r;
end else xdef:=1000;
if xdef=xglob then
begin
if xdef<>doubledef then
save(6,xdef,0,0,if xdef=xname then explan else <::>);
doubledef:=xdef;
goto newdef;
end;
end;
if xglob<xname then goto newext;
afterlast:
end;
x:=1; f:=2; xf:=2; r:=4; t:=8; xglob:=-13; doubledef:=-25;
open(udz,4,<:list1:>,0);
open(zdef,4,<:extdef:>,0);
open(z,4,<:externals:>,0);
inrec6(z,4);
xref:=signint(z.x);
filref:=signint(z.f);
relref:=z.r;
extused:=extused-1;
inrec6(zdef,4);
xdef:=signint(zdef.x);
fildef:=signint(zdef.f);
reldef:=zdef.r;
extdefined:=extdefined-1;
\f
comment lkn 75.09.10 textxref page ...11...
;
writelist(-12,13,3.0,<:boss protection register:>);
writelist(-11,13,3.0,<:boss own protection key:>);
writelist(-10,13,5.0,<:rel: free-total (d10-d12):>);
writelist(-9,13,5.0,<:rel: total-margin (d12-d13):>);
writelist(-8,7,14.0,<:device mask 2:>);
writelist(-7,7,14.0,<:device mask 1:>);
writelist(-6,7,14.0,<:device bits 2 for banker:>);
writelist(-5,7,14.0,<:device bits 1 for banker:>);
writelist(-4,7,14.0,<:boss std interval upper:>);
writelist(-3,7,14.0,<:boss std interval lower:>);
writelist(-2,11,44.0,<:boss private interval upper:>);
writelist(-1,11,44.0,<:boss private interval lower:>);
writelist(0,4,33.0,<:base of external table:>);
writelist(1,4,33.0,<:send and wait:>);
writelist(2,4,33.0,<:send and wait fast:>);
writelist(3,4,33.0,<:lock:>);
writelist(4,4,33.0,<:open:>);
writelist(5,4,33.0,<:lock chained:>);
writelist(6,4,33.0,<:open chained:>);
writelist(7,4,33.0,<:get pages:>);
writelist(8,4,33.0,<:page jump:>);
writelist(9,4,33.0,<:send and wait slow:>);
writelist(11,4,33.0,<:clear core:>);
writelist(12,4,33.0,<:reserve virt:>);
writelist(13,4,33.0,<:(and 41) 1. dummy 2. move virt:>);
writelist(14,4,33.0,<:(and 41) 1. dummy 2. simulate lock:>);
writelist(15,4,33.1,<:end init:>);
writelist(16,4,42.0,<:number of core places:>);
writelist(17,4,33.1,<:first core place (abs addr):>);
writelist(18,4,35.0,<:reservation in coruno table:>);
writelist(19,4,35.0,<:reservation in semaphore table:>);
writelist(20,4,35.0,<:reservation in sender table:>);
writelist(21,4,33.1,<:coruno output:>);
writelist(22,6,64.0,<:first terminal output:>);
writelist(23,4,33.1,<:name of main console:>);
writelist(24,4,33.0,<:(and 41) 1. dummy 2. put in active chain:>);
writelist(25,4,33.1,<:call:>);
writelist(26,4,33.1,<:current coroutine:>);
writelist(27,4,33.1,<:carriage return:>);
writelist(28,4,33.1,<:boss start time address:>);
writelist(29,4,33.1,<:number of work core places:>);
writelist(30,4,33.1,<:stop and wait:>);
writelist(31,4,33.1,<:init alarm:>);
writelist(32,4,33.1,<:prepare access:>);
writelist(33,4,33.1,<:terminate access:>);
writelist(34,4,33.1,<:w0 call:>);
writelist(35,4,33.1,<:wait answer:>);
writelist(36,4,33.1,<:search limit:>);
writelist(37,4,33.1,<:testoutput switch:>);
writelist(38,4,33.1,<:current segment in bosstest:>);
writelist(39,4,33.1,<:name table address of bosstest:>);
writelist(40,4,33.1,<:set externals:>);
\f
comment lkn 75.09.10 textxref page ...12...
;
writelist(51,6,72.0,<:address of request queue semaphore:>);
writelist(52,6,72.0,<:address of request free semaphore:>);
writelist(53,6,64.0,<:terminal reserve semaphore:>);
writelist(54,6,64.0,<:terminal full semaphore (simple):>);
writelist(56,10,3.0,<:reader operation queue (chained):>);
writelist(57,10,3.0,<:reader free boss controlled:>);
writelist(58,10,3.0,<:reader full boss controlled:>);
writelist(59,9,52.0,<:rewinder buf:>);
writelist(60,11,68.0,<:segments free:>);
writelist(61,11,68.0,<:segments full:>);
writelist(62,5,33.0,<:first attention semaphore (simple):>);
writelist(63,5,33.0,<:first psjob queue semaphore (chained):>);
writelist(64,5,33.0,<:first job in core semaphore (binary):>);
writelist(65,10,3.0,<:reader free job controlled:>);
writelist(66,10,3.0,<:reader full job controlled:>);
writelist(67,13,4.0,<:banker queue:>);
writelist(72,10,19.0,<:card reader free operation queue :>);
writelist(74,12,10.0,<:catalock:>);
writelist(75,12,25.0,<:reserve usercat:>);
writelist(76,7,14.0,<:psjob answer:>);
writelist(77,9,52.0,<:rewinder queue:>);
writelist(78,11,42.0,<:reserve banker access:>);
writelist(79,6,44.0,<:kit change queue:>);
writelist(80,11,15.0,<:start printer queue (tapeprinter, paperprinter 1,2,-):>);
writelist(81,6,64.0,<:terminal input semaphore:>);
writelist(100,5,31.1,<:first psjob coroutine:>);
writelist(101,5,33.0,<:first commandio coroutine:>);
\f
comment lkn 75.09.10 textxref page ...13...
;
writelist(102,4,43.0,<:first coroutine (pager):>);
writelist(130,5,47,<:virt snapshot,autoline:>);
writelist(131,5,47,<:rel entry snapshot (virt 130):>);
writelist(132,5,47,<:rel entry autoline (virt 130):>);
writelist(133,5,33,<:autoline (rel on job file page):>);
writelist(134,5,33,<:terminal user rights (rel on job file page):>);
writelist(135,0,0,<:rel hotnews (virt=247):>);
writelist(136,0,0,<:abs hotnews request line address:>);
writelist(140,12,60.0,<:virt remote batch codepage:>);
writelist(141,12,60.0,<:rel lookup and reserve device (virt=140):>);
writelist(142,12,60.0,<:rel lookup device (virt=140):>);
writelist(143,12,60.0,<:rel search device (virt=140):>);
writelist(144,12,60.0,<:rel search and lookup device (virt=140):>);
writelist(145,12,60.0,<:rel define device (virt=140):>);
writelist(146,12,60.0,<:rel connect telex (virt=140):>);
writelist(147,11,12,<:rel entry display convert:>);
writelist(150,4,33.1,<:start of terminal area:>);
writelist(151,7,14.0,<:first of psjob sender table entries:>);
writelist(152,6,71.0,<:first of request lines:>);
writelist(153,7,14.0,<:top of psjob sender table:>);
writelist(154,6,31.0,<:rel print catolog entry (virt=206):>);
writelist(155,5,32.0,<:value for abs page (nextline):>);
writelist(156,4,42.0,<:first of core table:>);
writelist(157,5,33.0,<:virt nextline, initline, bulkfile:>);
writelist(158,5,32.0,<:rel nextline (virt=157):>);
writelist(159,12,25.0,<:virt lookup user:>);
writelist(160,12,25.0,<:rel lookup user (virt=159):>);
writelist(161,5,32.0,<:rel initline (virt=157):>);
writelist(162,5,46.0,<:virt list etc. (rel=204, 205, 209, 224, 225, 229, 264, 310, 491):>);
writelist(163,5,33.0,<:first terminal sender descr:>);
writelist(164,10,3.0,<:first of boss controlled buffer:>);
writelist(165,10,3.0,<:top of boss controlled buffer:>);
writelist(166,10,3.0,<:first of job controlled buffer:>);
writelist(167,10,3.0,<:top of job controlled buffer:>);
writelist(168,10,3.0,<:page count address:>);
\f
comment lkn 75.09.10 textxref page ...14...
;
writelist(172,7,15.1,<:terminal user rights (on job descr page):>);
writelist(173,7,15.1,<:rel addr of reader table (from reader operation):>);
writelist(174,5,46.0,<:rel verify (virt=162):>);
writelist(175,5,32.0,<:psjob queue:>);
writelist(176,5,32.0,<:job in core:>);
writelist(177,5,32.0,<:job description page:>);
writelist(178,5,32.0,<:first address of terminal buffer:>);
writelist(179,5,32.0,<:rel on jobfile page: console state<12 + job state.
console state (left byte): 8+ready*4+user*2+operator*1+unlogged*16.
job state (right byte):
1<0 job card reader
1<1 job printer
1<2 job tape reader
1<3 off line
1<4 job printer used
1<5 no conversation
1<6 job printer accounted:>);
writelist(180,5,32.0,<:exhaust count:>);
writelist(181,5,32.0,<:rest room on page:>);
writelist(182,5,32.0,<:job buffer index:>);
writelist(183,5,32.0,<:get current virt buffer address:>);
writelist(184,5,32.0,<:message address:>);
writelist(185,5,32.0,<:first of job (even):>);
writelist(186,5,32.0,<:top of job ():>);
writelist(187,5,32.0,<:base store rel:>);
writelist(188,5,32.0,<:abs on page:>);
writelist(189,5,32.0,<:work page virt address:>);
writelist(190,5,32.0,<:line got - logical status at alarm:>);
writelist(191,5,32.0,<:rest room on page:>);
writelist(192,5,32.0,<:job buffer index:>);
writelist(193,5,32.0,<:virt buffer:>);
writelist(194,5,32.0,<:first buffer byte:>);
writelist(195,5,32.0,<:name of super buffer area:>);
writelist(196,5,32.0,<:length of super buffer (no of segm. * 512 - 512):>);
writelist(197,5,32.0,<:terminal full:>);
writelist(198,5,32.0,<:prog state (and answer rel):>);
writelist(199,5,32.0,<:current virtual address of card buffer:>);
writelist(200,5,32.0,<:last received status of card reader:>);
writelist(201,5,32.0,<:card length:>);
writelist(202,5,33.0,<:virt commandio central:>);
writelist(203,5,32.0,<:rel after action (virt=202):>);
writelist(204,5,46.0,<:rel alarm printing (virt=162):>);
writelist(205,5,46.0,<:rel io alarm (virt=162):>);
writelist(206,6,31.0,<:virt save, get:>);
writelist(207,6,31.0,<:rel save (virt=206):>);
writelist(208,6,31.0,<:rel get (virt=206):>);
writelist(209,5,46.0,<:rel list (virt=162):>);
writelist(210,5,46.0,<:rel file alarm (virt=162):>);
writelist(211,5,32.0,<:rel bulk get (virt=157):>);
writelist(212,5,32.0,<:rel bulk save (virt=157):>);
writelist(213,5,32.0,<:rel clear corrections (virt=157):>);
writelist(214,5,46.0,<:rel date and time (virt=162):>);
writelist(215,6,31.0,<:virt logout, check login (rel=216, 220):>);
writelist(216,6,31.0,<:rel logout (virt=215):>);
writelist(217,5,32.0,<:terminal name:>);
writelist(218,5,32.0,<:basis file name (jobfile page):>);
writelist(219,5,32.0,<:rel read login information (virt=202):>);
\f
comment lkn 75.09.10 textxref page ...15...
;
writelist(220,6,31.0,<:rel check login param (virt=215):>);
writelist(221,5,32.0,<:rel terminal reserve (on jobfile page):>);
writelist(222,5,32.0,<:rel terminal sender descr. addr. (on jobfile page):>);
writelist(223,5,32.0,<:rel attention semaphore (on jobfile page):>);
writelist(224,5,46.0,<:rel start commandio (virt=162):>);
writelist(225,5,46.0,<:rel login after error (virt=162):>);
writelist(226,5,32.0,<:rel(-2:login time), operations performed (on jobfile page):>);
writelist(227,5,32.0,<:rel std interval (on jobfile page):>);
writelist(228,5,32.0,<:rel of first correction segm. (on jobfile page):>);
writelist(229,5,46.0,<:rel general print (virt=162):>);
writelist(230,5,32.0,<:rel next file index (on jobfile page):>);
writelist(231,5,32.0,<:rel segm. number in basis file (on jobfile page):>);
writelist(232,6,9.0,<:rel newjob (virt=237):>);
writelist(233,6,31.0,<:virt save and clean buffer:>);
writelist(234,6,31.0,<:operator name address:>);
writelist(235,6,31.0,<:rel get from psjob (virt=206):>);
writelist(236,6,32.0,<:rel commandio answer semaphore (on jobfile page):>);
writelist(237,6,9.0,<:virt convert, go, newjob, run, regret, job, stop (506):>);
writelist(238,6,9.0,<:rel convert (virt=237):>);
writelist(239,6,9.0,<:rel go (virt=237):>);
writelist(240,6,9.0,<:rel run (virt=237):>);
writelist(241,6,9.0,<:rel regret (virt=237):>);
writelist(242,6,9.0,<:rel job (virt=237):>);
writelist(243,6,9.0,<:rel scope (virt=251):>);
writelist(244,6,1.0,<:virt answer etc. (rel=245, 246, 490, 254, 255, 256, 258, 295):>);
writelist(245,6,1.0,<:rel answer (virt=244):>);
writelist(246,6,1.0,<:rel kill (virt=244):>);
writelist(247,6,44.0,<:virt display etc. (rel=248, 249, 250, 263, 265, 485, 486):>);
writelist(248,6,44.0,<:rel display (virt=247):>);
writelist(249,6,44.0,<:rel request (virt=247):>);
writelist(250,6,44.0,<:rel kit (virt=247):>);
writelist(251,6,9.0,<:virt rename, clear, scope:>);
writelist(252,6,9.0,<:rel rename (virt=251):>);
writelist(253,6,9.0,<:rel clear (virt=251):>);
writelist(254,6,1.0,<:rel start (virt=244):>);
writelist(255,6,1.0,<:rel repeat (virt=244):>);
writelist(256,6,1.0,<:rel close (virt=244):>);
writelist(257,5,32.0,<:rel return from nextfile etc.:>);
writelist(258,6,1.0,<:rel change (virt=244):>);
writelist(259,6,31.0,<:virt transmit:>);
writelist(260,6,31.0,<:rel transmit (virt=259):>);
writelist(261,6,31.0,<:rel create output (virt=206):>);
writelist(262,6,31.0,<:rel return from create output:>);
writelist(263,6,44.0,<:rel kit label (virt=247):>);
writelist(264,5,46.0,<:rel attention (virt=162):>);
writelist(265,6,44.0,<:rel resource display (virt=247):>);
writelist(266,7,14.0,<:max core lock rel banker operation:>);
writelist(267,13,4.0,<:rel unclaimed accounts:>);
writelist(268,13,4.0,<:rel free accounts:>);
writelist(269,13,4.0,<:rel account accounts:>);
writelist(270,13,5.0,<:(j20) rel finis time record:>);
writelist(271,13,5.0,<:(j7) rel state record:>);
writelist(272,13,5.0,<:(d22) in core, a:>);
writelist(273,13,5.0,<:(d22+2) in core, b:>);
writelist(274,13,5.0,<:(j15) rel reserve all record:>);
writelist(275,13,5.0,<:(j17+2) rel job name record + 2:>);
writelist(276,13,5.0,<:(j17+6) rel job name record + 6:>);
writelist(277,13,5.0,<:(d0) first psjob (downer):>);
writelist(278,13,5.0,<:(d2+1) dead head:>);
writelist(279,13,5.0,<:(d1+1) resource head:>);
\f
comment lkn 75.09.10 textxref page ...16...
;
writelist(280,13,5.0,<:virt banker variables:>);
writelist(281,13,4.0,<:rel of account name (virt=280):>);
writelist(282,13,4.0,<:old time - old cpu time:>);
writelist(283,13,3.0,<:no of protection keys available for jobs:>);
writelist(284,13,4.0,<:length psjob descr:>);
writelist(285,13,6.0,<:name table address of catalog:>);
writelist(286,13,6.0,<:name table address of usercat:>);
writelist(287,13,5.0,<:slice length drum:>);
writelist(288,13,5.0,<:slice length disc:>);
writelist(289,5,32.0,<:rel special char and logout cause - jobfile:>);
writelist(290,6,45.0,<:base of boss kit table (10 bytes pr. entry):>);
writelist(291,6,45.0,<:last of boss kit table:>);
writelist(292,13,5.0,<:(j7+1) rel time class:>);
writelist(293,13,5.0,<:(j14) rel rest claims:>);
writelist(294,13,5.0,<:(f2) length of resource vector:>);
writelist(295,6,1.0,<:rel newtape (virt=244):>);
writelist(296,9,52.0,<:virt name, label:>);
writelist(297,9,52.0,<:rel name (virt=296):>);
writelist(298,9,52.0,<:rel label (virt=296):>);
writelist(299,5,32.0,<:rel state of term.output (on jobfile page):>);
writelist(300,5,32.0,<:rel terminal name (on jobfile page):>);
writelist(301,5,32.0,<:rel next byte (on jobfile page):>);
writelist(302,5,32.0,<:rel buf byte (on jobfile page):>);
writelist(303,5,32.0,<:rel virt byte (on jobfile page):>);
writelist(304,5,32.0,<:rel appetite (on jobfile page):>);
writelist(305,5,32.0,<:rel out bytes (on jobfile page):>);
writelist(306,5,32.0,<:rel terminal input semaphore (on jobfile page):>);
writelist(307,6,9.0,<:rel lookup (virt=251):>);
writelist(308,13,5.0,<:(j21) rel first core place on banker page:>);
writelist(309,13,5.0,<:(d13) rel margin on banker page:>);
writelist(310,5,46.0,<:rel message action (virt=162):>);
writelist(311,9,52.0,<:virt action table:>);
writelist(312,9,52.0,<:virt mount table:>);
writelist(313,9,52.0,<:virt psjob mount:>);
writelist(314,9,52.0,<:rel mount special (virt=313):>);
writelist(315,9,52.0,<:rel mount ring (virt=313):>);
writelist(316,9,53.0,<:rel mount tape (virt=313):>);
writelist(317,9,53.0,<:rel suspend (virt=313):>);
writelist(318,9,53.0,<:rel release (virt=313):>);
writelist(319,9,53.0,<:rel tape ready (virt=313):>);
writelist(320,8,19.1,<:virt psjob i/o (virt=321):>);
writelist(321,8,19.1,<:rel entry psjob i/o:>);
writelist(322,9,52.0,<:reserved state in job table:>);
writelist(323,8,19.1,<:virt psjob aux:>);
writelist(324,7,14.0,<:(d14+3) rel psjobno on psjob descr page:>);
writelist(325,7,14.0,<:(d107) rel swop area spec on psjob descr page:>);
writelist(326,7,14.0,<:(d20) rel project no on psjob descr page:>);
writelist(327,7,14.0,<:(d91) rel job no on psjob descr page:>);
writelist(328,7,14.0,<:(d19) rel jobname on psjob descr page:>);
writelist(329,7,14.0,<:(d19+2) rel jobname + 2 on psjob descr page:>);
writelist(330,7,14.0,<:(d19+4) rel jobname + 4 on psjob descr page:>);
writelist(331,7,14.0,<:(d96) rel psjob sem rel (=psjob no*e13) on psjob descr page :>);
writelist(332,7,14.0,<:(d87) rel psjob operation: semaphore operation on psjob descr page:>);
writelist(333,7,14.0,<:(d87+2) rel psjob operation + 2: on psjob descr page:>);
writelist(334,7,14.0,<:(d87+4) rel psjob operation + 4: on psjob descr page:>);
writelist(335,7,14.0,<:(d87+6=d14) rel psjob operation + 6:banker operation on psjob descr page:>);
writelist(336,7,14.0,<:(d98) rel rest mounts (byte) on psjob descr page:>);
writelist(337,7,14.0,<:rel rest suspends (byte) on psjob descr page:>);
writelist(338,7,14.0,<:(d0) virt jobfile descr:>);
writelist(339,7,14.0,<:(d104) rel finis cause on psjob descr page:>);
\f
comment lkn 75.09.10 textxref page ...17...
;
writelist(340,7,14.0,<:(d30+2) rel device mask (last of db word) on psjob descr page:>);
writelist(341,7,14.0,<:(d108) rel sender table address on psjob descr page:>);
writelist(342,7,14.0,<:(d106) rel process descr. address of job on psjob descr page:>);
writelist(343,7,14.0,<:(d93) rel request line on psjob descr page:>);
writelist(344,7,14.0,<:(d43) rel mounts on psjob descr page:>);
writelist(345,7,14.0,<:(d111+1) rel rest accounts (byte) on psjob descr page:>);
writelist(346,7,14.0,<:(d61) rel user ident in user cat on psjob descr page:>);
writelist(347,7,14.0,<:(d111) rel rest converts (byte) on psjob descr page:>);
writelist(348,7,14.0,<:(d14+2) rel (op.code, psjobno) in banker operation on psjob descr page:>);
writelist(349,7,14.0,<:(d14+4) rel (all, stations) in banker operation on psjob descr page:>);
writelist(350,8,19.1,<:rel answer (virt=321):>);
writelist(351,8,69.0,<:rel user kill (virt=426):>);
writelist(352,8,69.0,<:rel terminate (virt=426):>);
writelist(353,8,69.0,<:rel time-up (receive timer op.) (virt =426):>);
writelist(354,8,69.0,<:rel finis request (virt=417):>);
writelist(355,8,69.0,<:rel break request (virt=426):>);
writelist(356,8,69.0,<:rel replace request (virt=426):>);
writelist(357,8,69.0,<:rel timer request (virt=426):>);
writelist(358,8,69.0,<:rel input exhausted (virt=426):>);
writelist(359,8,69.0,<:rel hard error primary input (virt=426):>);
writelist(360,8,69.0,<:rel end medium primary input (virt=417):>);
writelist(361,8,69.0,<:rel mount error (cause=9,...,16) (virt=426):>);
writelist(362,8,69.0,<:rel swop out and wait (virt=426):>);
writelist(363,8,69.0,<:rel clean catalog (virt=495):>);
writelist(364,7,14.0,<:rel banker kill (virt=473):>);
writelist(365,10,21.0,<:virt start card:>);
writelist(366,10,21.0,<:rel start card:>);
writelist(367,5,32.0,<:rel on jobfile page: cards free jobcontrolled:>);
writelist(368,5,32.0,<:rel on jobfile page: cards full jobcontrolled:>);
writelist(369,5,32.0,<:rel on jobfile page: first virt card jobcontrolled:>);
writelist(370,5,32.0,<:rel on jobfile page: top virt card jobcontrolled:>);
writelist(371,7,14.0,<:rel on job descr page: card reader queue:>);
writelist(372,7,14.0,<:rel priority (virt=400):>);
writelist(373,7,14.0,<:rel wait (virt=400):>);
writelist(374,7,14.0,<:rel preserve (virt=400):>);
writelist(375,7,14.0,<:(d140) rel on job descr page: no of conversational input lines:>);
writelist(376,7,14.0,<:(d137) rel on job descr page: actual waiting time:>);
writelist(377,11,12.0,<:rb printer wait semaphore:>);
writelist(378,11,12.0,<:remote batch printer convert queue:>);
writelist(379,11,12.0,<:paper manipulation (binary semaphore):>);
writelist(380,11,12.0,<:paper 0 queue address:>);
writelist(381,11,12.0,<:printer wait:>);
writelist(382,11,4.0,<:convert operations semaphore (type 0 and 1):>);
writelist(383,11,68.0,<:virt superbuffer start:>);
writelist(384,11,68.0,<:virt superbuffer top:>);
writelist(385,11,12.0,<:virt paper descr page:>);
writelist(386,11,68.0,<:virt main loop page:>);
writelist(387,11,44.0,<:virt central page:>);
writelist(388,11,4.0,<:convert operations semaphore (type 2):>);
writelist(389,11,57.0,<:virt triangle page:>);
writelist(390,11,-99.0,<:virt return from next paper fount (tape printer):>);
writelist(391,11,-99.0,<:rel return from next paper found (tape printer):>);
writelist(392,11,12.0,<:rel entry, any paper (tape printer):>);
writelist(393,11,-99.0,<:tape printer, rel of paper descr:>);
writelist(394,11,-99.0,<:virt tape printer, main loop:>);
writelist(395,11,-99.0,<:virt tape printer, mounter:>);
writelist(396,11,12.0,<:rel select command (virt=385):>);
writelist(397,11,12.0,<:rel reject command (virt=385):>);
writelist(398,11,-99.0,<:rel sem addr to paper descr:>);
writelist(399,11,-99.0,<:convert answer semaphore:>);
\f
comment lkn 75.09.10 textxref page ...18...
;
writelist(400,7,13.0,<:virt codepage 3:>);
writelist(401,7,14.0,<:(c61) rel include user (on codepage 4) (virt=473):>);
writelist(402,7,14.0,<:rel replace job (virt=400):>);
writelist(403,7,14.0,<:(d28) rel first of private kit table:>);
writelist(404,7,14.0,<:rel entry off-line job (virt=400):>);
writelist(405,7,14.0,<:rel entry on-line job (virt=400):>);
writelist(406,7,14.0,<:(d62) rel no of useable private kits:>);
writelist(407,7,14.0,<:(d22) rel user cat ref disc rest key 3 on job descr page:>);
writelist(408,7,14.0,<:(d60) rel user cat ref drum rest key 3 on job descr page:>);
writelist(409,7,14.0,<:(d69) rel disc rest key 2 on job descr page:>);
writelist(410,7,14.0,<:(d58) rel disc rest key 1 on job descr page:>);
writelist(411,7,14.0,<:(d67) rel drum rest key 2 on job descr page:>);
writelist(412,7,14.0,<:(d59) rel drum rest key 1 on job descr page:>);
writelist(413,12,10.0,<:rel ref prepare bs adjust (virt=415):>);
writelist(414,12,10.0,<:rel ref terminate bs adjust (virt=415):>);
writelist(415,12,10.0,<:virt ref bs adjust:>);
writelist(416,12,25.0,<:virt ref usercat buffer page:>);
writelist(417,8,69.0,<:virt ref finis job page:>);
writelist(418,7,11.0,<:(d122) rel rb terminal ident on job descr page:>);
writelist(419,7,14.0,<:(d15) rel tail on psjob descr page:>);
writelist(420,7,14.0,<:rel minimal command (virt=400):>);
writelist(421,7,14.0,<:(d24) rel standard interval on psjob descr page:>);
writelist(422,7,14.0,<:(d65-d30) max device rel to standard device:>);
writelist(423,7,11.0,<:(d119) rel rb device name table addr on job descr page:>);
writelist(424,7,11.0,<:(d120) rel rb device creation number on job descr page:>);
writelist(425,7,11.0,<:(d121) rel rb printer name (last of db word) on job descr page:>);
writelist(426,8,69.0,<:virt ref break page:>);
writelist(427,8,69.0,<:rel finis (finiscause) (virt=417):>);
writelist(428,12,10.0,<:rel ref transfer perm claims and prepare (virt=415):>);
writelist(429,5,33.0,<:rel next store in job input area:>);
writelist(430,12,3.0,<:used accounts:>);
writelist(431,12,1.0,<:rel outrec (virt=436):>);
writelist(432,12,1.0,<:rel prepare (virt=436):>);
writelist(433,12,1.0,<:rel private (virt=436):>);
writelist(434,12,1.0,<:rel terminate (virt=436):>);
writelist(435,12,1.0,<:virt account buf:>);
writelist(436,12,1.0,<:virt account code:>);
writelist(437,10,55.0,<:rel empty files in psload (virt=440):>);
writelist(438,7,14.0,<:(d92) rel paper tape count (byte) on psjob descr page:>);
writelist(439,7,14.0,<:(d51) rel tapes (byte) on psjob descr page:>);
writelist(440,10,55.0,<:virt load, empty files (rel=437, 441):>);
writelist(441,10,55.0,<:rel load entry (virt=440):>);
writelist(442,10,33.0,<:virt read tape (rel=443):>);
writelist(443,10,33.0,<:rel read tape (virt=442):>);
writelist(444,10,44.0,<:virt read card (rel=445):>);
writelist(445,10,44.0,<:rel read card entry (virt=444):>);
writelist(446,5,32.0,<:tape reader (job): prog state (and answer rel):>);
writelist(447,5,32.0,<:tape reader (job): start rel:>);
writelist(448,5,32.0,<:tape reader (job): curr. virt addr. of tape buffer:>);
writelist(449,5,32.0,<:tape reader (job): last received status of tape reader:>);
writelist(450,5,32.0,<:card reader (job): start rel of input in buffer:>);
writelist(451,7,13.0,<:virt codepage 2:>);
writelist(452,7,14.0,<:rel size command (virt=400):>);
writelist(453,7,14.0,<:rel internals command (virt=400):>);
writelist(454,7,14.0,<:rel program command (virt=400):>);
writelist(455,7,14.0,<:rel buf command (virt=400):>);
writelist(456,7,14.0,<:rel areas command (virt=400):>);
writelist(457,7,14.0,<:rel key command (virt=400):>);
writelist(458,7,14.0,<:rel perm command (virt=400):>);
writelist(459,7,14.0,<:rel temp command (virt=400):>);
\f
comment lkn 75.09.10 textxref page ...19...
;
writelist(460,7,14.0,<:rel latest command (virt=400):>);
writelist(461,7,14.0,<:rel mounts command (virt=400):>);
writelist(462,7,14.0,<:rel output command (virt=400):>);
writelist(463,7,14.0,<:rel time command (virt=400):>);
writelist(464,7,14.0,<:rel account command (virt=400):>);
writelist(465,7,14.0,<:rel stations command (virt=400):>);
writelist(466,7,14.0,<:rel device command (virt=473):>);
writelist(467,7,14.0,<:rel tapes command (virt=400):>);
writelist(468,7,14.0,<:rel cbuf command (virt=400):>);
writelist(469,7,14.0,<:rel suspend command (virt=400):>);
writelist(470,7,14.0,<:rel proc set bs claim (virt=451):>);
writelist(471,7,13.0,<:virt codepage 5:>);
writelist(472,7,13.0,<:virt codepage 1:>);
writelist(473,7,13.0,<:virt codepage 4:>);
writelist(474,5,32.0,<:rel current paper type on jobfile page:>);
writelist(475,7,14.0,<:rel disc rest key 3:>);
writelist(476,7,14.0,<:rel drum rest key 3:>);
writelist(477,9,53.0,<:rel finis mount (virt=313):>);
writelist(478,8,69.0,<:rel return from mounter finis (virt=477):>);
writelist(479,7,14.0,<:(d74) rel convert claim: entries:>);
writelist(480,7,14.0,<:(d74+1) rel convert claim: slices:>);
writelist(481,8,69.0,<:rel corelock request (virt=426):>);
writelist(482,8,69.0,<:rel coreopen request (virt=426):>);
writelist(483,7,14.0,<:rel online command (virt=400):>);
writelist(484,7,14.0,<:rel corelock command (virt=400):>);
writelist(485,6,44.0,<:rel message (virt=247) :>);
writelist(486,6,44.0,<:rel remove (virt=247) :>);
writelist(487,9,52.0,<:rel even on label page (virt=296):>);
writelist(488,9,52.0,<:rel nrz on label page (virt=296):>);
writelist(489,9,52.0,<:rel nrze on label page (virt=296):>);
writelist(490,6,1.0,<:rel test on kill page (virt=244):>);
writelist(491,5,46.0,<:rel clock on general print page (virt=162):>);
writelist(492,7,14.0,<:rel account job entry:>);
writelist(493,8,69.0,<:rel high priority start (virt=426):>);
writelist(494,5,32.0,<:rel time logged in on jobfile page:>);
writelist(495,8,69.0,<:virt ref clean catalog:>);
writelist(496,6,1.0,<:rel define on kill page (virt=244):>);
writelist(497,13,4.0,<:rel priority in job descr on banker page:>);
writelist(498,7,15,<:rel entry copy area:>);
writelist(499,7,15,<:status, operation (from copy area):>);
writelist(500,6,9.0,<:rel lookup rbprintername (virt=237):>);
writelist(501,7,14.0,<:rel cpu - used (0.8 sec.) on job descr page:>);
writelist(502,7,14.0,<:rel temp drum, disc on job descr page:>);
writelist(503,7,14.0,<:rel stations on job descr page:>);
writelist(504,7,14.0,<:rel top address on job descr page:>);
writelist(505,7,14.0,<:rel first address on job descr page:>);
writelist(506,6,9.0,<:rel stop (virt=237):>);
writelist(507,5,33.0,<:segments in save buffer + jobfile:>);
writelist(508,7,14.0,<:length (in segments) of job descr:>);
writelist(509,9,53.0,<:length (in segments) of psjob mount code + mounttable + mount-action-table:>);
writelist(510,6,72.0,<:length ( in segments) of request line page:>);
writelist(511,7,14.0,<:(d123) rel first of telex device table on job descr page:>);
writelist(512,7,14.0,<:(d124) rel of device kind in telex table on job descr page:>);
writelist(513,7,14.0,<:(d125) rel of device name in telex table on job descr page:>);
writelist(514,7,14.0,<:(d126) rel of telex no in telex table on job descr page:>);
writelist(515,7,14.0,<:(d127) rel of answer back in telex table on job descr page:>);
writelist(516,7,14.0,<:(d128) length of entry in telex table on job descr page:>);
writelist(517,7,14.0,<:(d130) rel top of telex device table on job descr page:>);
\f
comment sm 75.07.25 textxref page ...20...
;
writelist(551,0,0,<::>);
save(15,1000,0,0,<::>);
close(z,true);
close(zdef,true);
close(udz,true);
end sorting in groups after use;
begin comment This block outputs the records in lists (one list accor-
ding to each of the keys). The records are scanned
and output on current output one list at a time;
zone z(128,1,stderror);
integer extern,file,relative,relnum,extnum,oldfile,oldext,i;
real textref;
integer field r;
boolean field x,f;
real field t;
integer array fileconv(1:13);
procedure getrecord(listenr);
comment This procedure reads and delivers the next record with
a specified key (read from 'list1').
All records not fitting are neglected;
value listenr;
integer listenr;
begin
integer i;
inrec6(z,8);
for i:=z.r shift (-20) while i<>listenr and i<>15 do inrec6(z,8);
extern:=signint(z.x);
file:=signint(z.f);
relative:=z.r extract 20;
textref:=z.t;
end getrecord;
open(z,4,<:list1:>,0);
x:=1; f:=2; r:=4; t:=8;
for i:=1 step 1 until 13 do fileconv(i):=case i of
(10,10,10,11,2,1,3,4,5,6,7,8,9);
if offset<0 then offset:=0;
write(out,<:<12><10><10>Definitions of externals:<10><10><10>:>);
getrecord(7);
for i:=0 while extern<551 do
begin
write(out,<<-ddd>, extern,<: def: :>);
if file=14 then
begin
filename(11);
write(out,<: page :>,<<dddd>,relative//10,case relative mod 10 +1 of
(<: :>,<:.a:>,<:.b:>,<:.c:>,<:.d:>,<:.e:>,
<:.f:>,<:.g:>,<:.h:>,<:.i:>),<: :>,string textref,<:<10><10>:>);
end else
begin
filename(file);
write(out,<<dddddd>,relative+offset,<: :>,string textref,<:<10><10>:>);
end;
getrecord(7);
end;
\f
comment lkn 75.09.10 textxref page ...21...
;
write(out,<:<12><10><10>References to externals:<10><10><10>:>);
setposition(z,0,0);
oldext:=-25;
getrecord(4);
for i:=0 while extern<551 do
begin
if oldext<>extern then
begin
oldext:=extern;
oldfile:=-1;
write(out,<:<10><10>:>,<<-ddd>, extern,<: :>, string textref);
end;
if oldfile<>file then
begin
write(out,<:<10> :>);
filename(file);
oldfile:=file;
relnum:=0;
end;
if relnum=8 then
begin
write(out,<:<10> :>);
relnum:=0;
end;
write(out,<<dddddd>, relative+offset);
relnum:=relnum+1;
getrecord(4);
end;
write(out,<:<12><10><10>Defined, unreferenced externals:<10><10><10>:>);
setposition(z,0,0);
getrecord(3);
for i:=0 while extern<551 do
begin
write(out,<<-ddd>, extern,<: def: :>);
filename(file);
write(out,<<dddddd>, relative+offset,<: :>,string textref,<:<10>:>);
getrecord(3);
end;
write(out,<:<12><10><10>Named, unused externals:<10><10><10>:>);
setposition(z,0,0);
getrecord(5);
for i:=0 while extern<551 do
begin
write(out,<<-ddd>,extern,<: named: :>);
filename(fileconv(file));
write(out,<: page: :>,<<ddd>, relative//10,case relative mod 10 +1 of
(<: :>,<:.a:>,<:.b:>,<:.c:>,<:.d:>,<:.e:>,<:.f:>,
<:.g:>,<:.h:>,<:.i:>),<: :>,string textref,<:<10><10>:>);
getrecord(5);
end;
\f
comment lkn 75.09.10 textxref page ...22...
;
write(out,<:<12><10><10>Unused externals:<10><10><10>:>);
setposition(z,0,0);
extnum:=0;
getrecord(0);
for i:=0 while extern<551 do
begin
if extnum=10 then
begin
outchar(out,10);
extnum:=0;
end;
write(out,<<-ddddd>,extern);
extnum:=extnum+1;
getrecord(0);
end;
write(out,<:<12><10><10>Used externals, not named:<10><10><10>:>);
setposition(z,0,0);
extnum:=0;
oldext:=-25;
getrecord(1);
for i:=0 while extern<551 do
begin
if extern<>oldext then
begin
oldext:=extern;
if extnum=10 then
begin
outchar(out,10);
extnum:=0;
end;
write(out,<<-ddddd>,extern);
extnum:=extnum+1;
end;
getrecord(1);
end;
write(out,<:<12><10><10>Referenced, undefined externals:<10><10><10>:>);
setposition(z,0,0);
getrecord(2);
oldext:=-25;
for i:=0 while extern<551 do
begin
if extern<>oldext then
begin
oldext:=extern;
write(out,<<-ddd>, extern);
write(out,<: :>,string textref,<:<10>:>);
getrecord(2);
end;
end;
write(out,<:<12><10><10>Multiply defined externals:<10><10><10>:>);
setposition(z,0,0);
getrecord(6);
for i:=0 while extern<551 do
begin
write(out,<:<10>:>,<<-ddd>,extern);
write(out,<: :>,string textref);
getrecord(6);
end;
outchar(out,12);
end;
end;
endprog:
end;
▶EOF◀