|
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: 5376 (0x1500) Types: TextFile Names: »nextnumberx«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦0f6e8048b⟧ »preditfile« └─⟦this⟧
\f comment predit text * page 45 11 02 80, 16.42 0 1 2 3 4 5 6 7 8 9 ; comment case 12, nextnumber nextnumber is used to create or change non area entries describing magtapes call: a) nextnumber<s><entryname>.<init><s><tapelabel> b) nextnumber<s><entryname>.<number>.<s><low>.<high><s><mtletters> the call a) will initialize a catalog entry on scope temp, pointing to file 1 on the tape<tapelabel>. the call b) will change the tail of an existing catalog entry to point to a magtape having the mtnumber of the existing tail raised by <number>. the program is usefull when having a series of worktape such as dumptapes going from mtme<low> to mtme<high>. You may then create a catalog entry pointing to mtme<low> by using the call a) and give it a permanent scope. When you need the the next tape in the serie you may use te call b) with <number> = 1. When the tape mtme<high> has been used the next call b) will choose mtme<low> as the next tape. ; begin integer i, j, p, h, l; boolean init, mttest; integer array tail(1:10); array tapename, plus, low, high, mtname(1:2); long array field longdoc, mtlaf; procedure stop(s); ____________________ string s; system(9, 0*write(out, <:<10>*** :>, s), <:<10>system9:>); procedure stap(a, s); ______________________ array a; string s; begin long array field lafl; lafl:=0; system(9, 0*write(out, <:<10>*** :>, (a.lafl), s), <:<10>system9:>); end; \f comment predit text * page 46 11 02 80, 16.42 0 1 2 3 4 5 6 7 8 9 ; integer procedure xlookupproc(tapenamep, tailp, mtnamep); ____________________________________________ array tapenamep, mtnamep; integer array tailp; begin integer i, M, x; long tailnumber; boolean raise; integer array q(0:4), maxa, mina(0:3); integer array field numb; long array field inc; zone zhelp(1, 1, stderror); longdoc:=2; numb:=0; open (zhelp, 0, tapenamep, 0); xlookupproc:=i:=monitor(42<*lookup*>, zhelp, 0, tailp); if i<>0 then stap (tapenamep, <:-magtapeentry does not exist:>); h:=high(1); l:=low(1); maxa(3):=h//1000+48; mina(3):=l//1000+48; maxa(2):=h mod 1000//100+48; mina(2):=l mod 1000//100+48; maxa(1):=h mod 100//10+48; mina(1):=l mod 100//10+48; maxa(0):=h mod 10+48; mina(0):=l mod 10+48; M:=1; for i := 0 step 1 until 3 do begin maxa(i) := maxa(i) + M; M:=0; if maxa(i) = 58 then begin maxa(i) := 48; M := 1; end; end; raise := (-, mttest) or (tailp.longdoc (1) shift (-16) shift 16 = mtnamep.mtlaf(1)); if raise then begin inc:=4; x:=plus(1); tailnumber := tailp.inc(1) ; for i := 0 step 1 until 4 do q(i) := tailnumber shift (-8 -i*8) extract 8; for p:= 1 step 1 until x do begin M:=1; for i:=0 step 1 until 3 do begin q(i):= q(i) + M; M:=0; if q(i) = 58 then begin q(i) := 48; M := 1; end; end; \f comment predit text * page 47 11 02 80, 16.42 0 1 2 3 4 5 6 7 8 9 ; if q(3) = maxa(3) and q(2) = maxa(2) and q(1) = maxa(1) and q(0) = maxa(0) then for j := 3 step -1 until 0 do q(j):= mina(j); end; tailp (3) := tailp (4):=0; for i := 4 step -1 until 3 do tailp(3) := (tailp(3) add q(i)) shift 8; tailp(3):=tailp(3) add q(2); for i:= 1 step -1 until 0 do tailp(4):= (tailp(4) add q(i)) shift 8; end else stap(mtnamep, <:- mt letters incorrect:>); end xlookupproc; init:=mttest:=false; if readparam(tapename) = -1 then stop(<:param error:>); p:=readparam(plus); if -, (p=3 or p=4) then stap(plus, <:-param error:>); init:=real <:init:> = plus(1); if -, init and p = 4 then stap(plus, <:-param error:>); if -, init and p = 3 then begin if readparam(low) <> 1 then stop(<:param error low:>); if readparam(high) <> 3 then stop(<:param error high:>); mttest := readparam(mtname) = 2; mtlaf:=0; xlookupproc(tapename, tail, mtname); longdoc:=0; chngentrpr (tapename.longdoc, tail); trapmode := 1 shift 10; end; if init and p = 4 then begin p := readparam (mtname); if p <> 2 then stap(mtname, <:-param error:>); mtlaf:=0; longdoc := 2; tail(1) := 1 shift 23 +18; tail.longdoc(1):=mtname.mtlaf(1); tail.longdoc(2):=mtname.mtlaf(2); for i := 6 step 1 until 10 do tail(i):=0; tail(7):=1; if setproc(tapename.mtlaf, tail) <> 0 then stap(tapename, <:-no resources:>); end; end case 12, nextnumber; ▶EOF◀