|
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◀