|
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: 9216 (0x2400) Types: TextFile Names: »tuserout«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦0b92c64d5⟧ »ctb« └─⟦this⟧
userout = set 50 disc scope user userout (userout = algol end) begin message versionid : 76 10 28, 3 ; comment edit1 : 1) all new types in the catalog have been added (58-68) 2) the layout for output has been slightly modified 3) a few comments have been added in relevant places ; integer i, j, no, bindex, windex, segment, max, restlines, page, length, type, maxtype, indexsegm; integer array dummy (1:10); zone usercat (128, 1, stderror); real date, time; boolean nl, sp; integer array field wordrec; boolean array field byterec; real array field textrec; comment length - the length of the current record in bytes. windex - tells how far we have come in the current record counted in words. bindex - as above in bytes. ; procedure outcr(no); value no; integer no; begin restlines := restlines - no; if restlines < 1 then outpage else write(out, nl,no); end outcr; procedure outpage; begin page := page + 1; restlines := 58; write(out, false add 12,1, sp,40, <:usercat:>, sp,33, << dd dd dd>, date, << dd dd>, time, <: page:>, << ddd>, page, nl,2); if page>1 then write(out,<:segm byte type:>,nl,1); end outpage; procedure nextsegment; begin segment := segment + 1; inrec(usercat, 128); bindex := windex := 0; end nextsegment; procedure nextrec; begin comment the procedure makes the next record available for printing, and prints a record head; integer word; bindex := bindex + length; windex := windex + length/2; if bindex > 510 then nextsegment; for word := usercat.wordrec(windex) while word = 0 do nextsegment; type := usercat.byterec(bindex) extract 12; length := usercat.byterec(bindex+1) extract 12; if type < 4 then begin if restlines <> 58 then outcr(if type < 2 then 5 else 2); if restlines < (if type < 2 then 10 else 5) then outpage; end; outcr(1); write(out, <<ddd>, <:(:>, segment, <:,:>, bindex, <:):>, sp,3, type); if type extract 1 = 1 then write(out, sp,3, <:max:>); end nextrec; \f procedure int(rel, text); value rel; integer rel; string text; write(out, sp,3, text, <: = :>, <<d>, usercat.wordrec(windex + rel/2)); procedure int2(txt); string txt; write(out, sp, 3, txt, sp , 2, if usercat.wordrec(windex+1)=0 then <:no:> else <:yes:>); procedure double(rel, text); value rel; integer rel; string text; write(out, sp,3, text, <: = :>, <<d>, usercat.wordrec(windex + rel/2), <:/:>, usercat.wordrec(windex + rel/2 + 1)); procedure bytes(rel, text); value rel; integer rel; string text; write(out, sp,3, text, <: = :>, <<d>, usercat.byterec(bindex + rel) extract 12, <:/:>, usercat.byterec(bindex + rel + 1) extract 12); procedure bitmask(text); string text; begin integer word; write(out,sp,3,text,<: : :>); word:= usercat.wordrec(windex+1); for i:=1 step 1 until 24 do begin if word<0 then write(out,<:1:>) else write(out,<:0:>); word:=word shift 1; end; end proc bitmask; procedure text(rel, txt); value rel; integer rel; string txt; begin integer i; textrec := bindex + rel - 1; i := 1; write(out, sp,3, txt, string usercat.textrec(increase(i))); end text; procedure bits(rel, text, words); value rel, words; integer rel, words; string text; begin integer i, j, word; write(out, sp,3, text, <: : :>); for i := 0 step 1 until words-1 do begin word := usercat.wordrec(windex + rel/2 + i); for j := 0 step 1 until 23 do begin if (type extract 1 = 0) and (word<0) then <*standard*> write(out,<< d>,24*i+j); if (type extract 1 = 1) and (word>0) then <*max*> write(out,<< d>,24*i+j); <* the devicemask has the following content max : 1 - device not allowed 0 - device allowed std : 1 - device allowed 0 - device not allowed *> word := word shift 1; end end end bits; \f byterec := 1; wordrec := 2; segment := -1; page := 0; length := 0; max := (-1) extract 23; maxtype := 70; nl := false add 10; sp := false add 32; systime(1, 0, date); date := systime(2, date, time); time := time/100; open(usercat, 4, <:usercat:>, 0); monitor(52, usercat, i, dummy); if monitor(8, usercat, i, dummy) <> 0 then begin write(out, nl,2, <:*** usercat not available:>); goto finis; end; outpage; write(out, sp,41, <:indextable:>); outcr(2); nextsegment; indexsegm:= j := 0; for j := j + 1 while usercat.wordrec(j) < 0 do; comment the segment number and the projectnumber ending this segment is written out (i.e. the indextable); no := 0; for i := 0, i+1 while no <> max do begin no := usercat.wordrec(i - 256*(segment - indexsegm)); write(out, sp,22, <<ddd>, i, << -dddddddd>, no); if i extract 1 = 1 then outcr(1) else write(out, sp,10); if i extract 8 = 255 then nextsegment; end; for j := j while j <> segment do nextsegment; outpage; \f next: nextrec; if type > (maxtype+1) then goto unknown; case type//2 + 1 of begin begin comment type 0; int(2, <:project:>); comment the catalog is finished by a project with the projectnumber 2**23-1 ; if usercat.wordrec(windex+1) = max then goto finis; double(4, <:max interval:>); restlines := restlines - 1; write(out, nl,1, sp,15); bytes(8, <:rest entries, slices on disc:>); bytes(10,<:total entries, slices on disc:>); end; begin comment type 2; text(2, <:name : :>); int(10, <:std interval start:>); restlines := restlines - 1; write(out, nl,1, sp,15); int(12, <:interval length:>); int(14, <:no of intervals:>); end; begin comment type 4; int(2, <:priority:>); int(4, <:minimal value of late:>); end; begin comment type 6; text(2, <:device : :>); bytes(10, <:key 3,rest entries, slices:>); bytes(12, <:key3,total entries, slices:>); end; comment type 8; bits(2, <:special devices:>, length//2 - 1); comment type 10; int(2, <:accounts:>); comment type 12; int(2, <:area claim:>); comment type 14; int(2, <:buffer claim:>); comment type 16; int(2, <:convert buffers:>); comment type 18; int(2, <:internal claim:>); comment type 20; int(2, <:keys:>); comment type 22; int(2, <:mounts:>); comment type 24; int(2, <:output:>); \f comment type 26; int(2, <:size:>); comment type 28; int(2, <:stations:>); comment type 30; int(2, <:tapes:>); comment type 32; int(2, <:time:>); comment type 34; begin double(2, <:user max interval:>); write(out,nl,1,sp,18); restlines :=restlines-1; bytes(6, <:key 3, rest user claim:>); bytes(8, <:key 3, total user claim:>); end; comment type 36; bytes(2, <:drum, key 1, entries, slices:>); comment type 38; bytes(2, <:disc, key1, entries, slices:>); comment type 40; bytes(2, <:disc, key 3, user entries, slices:>); comment type 42; text(2, <:user identification ::>); comment type 44; begin bytes(2, <:drum, key 3, rest entries, slices:>); bytes(4, <:drum, key 3, total entries, slices:>); end; comment type 46; bytes(2, <:drum, key 3, user entries, slices:>); begin comment type 48; text(2, <:device : :>); bytes(10, <:key3, user entries, slices:>); end; comment type 50; int(2, <:latest finishing time:>); comment type 52; text(2, <:project id:>); comment type 54; text(2, <:program name:>); comment type 56; int(2, <:suspendings:>); comment type 58 online; int2(<:online:>); comment type 60 corelock; int(2,<:corelock:>); comment type 62; int2(<:minimal:>); comment type 64 start priority; int(2,<:priority:>); comment type 66; int(2,<:max swopout time:>); comment type 68; int2(<:preserve:>); comment type 70 user right bits ; bitmask(<:userbits :>); end case-list; goto next; \f unknown: write(out, sp,3, <:unknown type - contents::>); outcr(1); for i := 0 step 2 until length-2 do begin write(out, sp,18, <:(:>, <<dd>, i, <:):>, << dddd>, usercat.byterec (bindex + i ) extract 12, usercat.byterec (bindex + i + 1) extract 12); outcr(1); end; goto next; finis: close(usercat, true); write(out, <:<12>:>); end program; \f ▶EOF◀