|
|
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: 19200 (0x4b00)
Types: TextFile
Names: »tsystest4 «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
└─⟦f546e193b⟧
└─⟦this⟧ »tsystest4 «
message de enkelte testprocedurer part 2 (tsystest4);
integer procedure test_tape (name);
long array name;
begin
integer ejok, sh, mk, bl, bu, i, j;
zone z (1, 1, xstderror);
procedure wseq (nr, name, mk, sh, filer, blokke, buflgd, testnr);
long array name;
integer nr, mk, sh, filer, blokke, buflgd, testnr;
begin
zone z (buflgd * 128 * sh, sh, xstderror);
integer f, b, i, j, k;
long l;
long field lf;
write (out, "nl", 1, <:write seq :>, name,
"sp", 1, if mk shift (- 14) extract 1 = 0 then <:high:> else <:low:>,
<: density:>,
filer, if filer <> 1 then <: filer:> else <: fil:>,
<: af:>, blokke, <: *:>, buflgd, <: segm,:>, sh, <:'bufret:>);
if online then setposition (out, 0, 0);
blok_lgd (nr) := buflgd;
segment_nr (nr) := filer * blokke * buflgd;
for f := 0 step 1 until filer - 1 do
begin <* pr fil *>
if test then wr_test (<:fil:>, f);
xnulstil (z);
open (z, mk, name, 1 shift 9);
setposition (z, f, 0);
for b := 0 step 1 until blokke - 1 do
begin <* pr blok *>
l := extend testnr shift 40 + extend f shift 32 + extend b shift 24;
if test then wr_test (<:blok:>, b);
outrec6 (z, buflgd * 512);
for lf := 4 step if datacheck then 4 else 32 * 4 until buflgd * 512 do
z.lf := l + lf;
segment_nr (nr) := segment_nr (nr) - buflgd;
end pr blok;
close (z, false);
end pr fil;
end procedure wseq;
integer procedure rseq (nr, name, mk, sh, filer, blokke, buflgd, testnr);
long array name;
integer nr, mk, sh, filer, blokke, buflgd, testnr;
begin
zone z (buflgd * 128 * sh, sh, xstderror);
integer f, b, i, j, k, ejok;
long l;
long field lf;
write (out, "nl", 1, <:read seq :>, name,
"sp", 1, if mk shift (- 14) extract 1 = 0 then <:high:> else <:low:>,
<: density:>,
filer, if filer <> 1 then <: filer:> else <: fil:>,
<: af:>, blokke, <: *:>, buflgd, <: segm,:>, sh, <:'bufret:>);
if online then setposition (out, 0, 0);
ejok := 0;
xnulstil (z);
open (z, mk, name, 1 shift 9);
blok_lgd (nr) := buflgd;
segment_nr (nr) := filer * blokke * buflgd;
for f := 0 step 1 until filer - 1 do
begin <* pr fil *>
if test then wr_test (<:fil:>, f);
setposition (z, f, 0);
for b := 0 step 1 until blokke - 1 do
begin <* pr blok *>
l := extend testnr shift 40 + extend f shift 32 + extend b shift 24;
if test then wr_test (<:blok:>, b);
inrec6 (z, buflgd * 512);
for lf := 4 step if datacheck then 4 else 32 * 4 until buflgd * 512 do
if z.lf <> l + lf
then
begin <* fejl *>
antal_fejl (nr) := antal_fejl (nr) + 1;
ejok := ejok + 1;
fejl (<:Fejl ved seq read:>, - 1);
write (out, <<d>, <:fil.:>, f, <:, blok.:>, b, <:, adr.:>, lf,
"nl", 1, <:(nr.fil.blok.adr / nr < 40 + fil < 32 + blok < 24 + adr):>);
wr_z_tape (l + lf, z.lf);
if ejok >= stop then
begin <* for mange fejl *>
wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
f := filer;
b := blokke;
lf := buflgd * 512;
end for mange fejl;
end fejl;
segment_nr (nr) := segment_nr (nr) - buflgd;
end pr blok;
end pr fil;
close (z, false);
rseq := ejok;
end procedure rseq;
integer procedure rback (nr, name, mk, sh, filer, blokke, buflgd, testnr);
long array name;
integer nr, mk, sh, filer, blokke, buflgd, testnr;
begin
zone z (buflgd * 128 * sh, sh, xstderror);
integer f, b, i, j, k, ejok;
long l;
long field lf;
write (out, "nl", 1, <:read backwards :>, name,
"sp", 1, if mk shift (- 14) extract 1 = 0 then <:high:> else <:low:>,
<: density:>,
filer, if filer <> 1 then <: filer:> else <: fil:>,
<: af:>, blokke, <: *:>, buflgd, <: segm,:>, sh, <:'bufret:>);
if online then setposition (out, 0, 0);
ejok := 0;
xnulstil (z);
open (z, mk, name, 1 shift 9);
blok_lgd (nr) := buflgd;
segment_nr (nr) := filer * blokke * buflgd;
for f := filer - 1 step - 1 until 0 do
begin <* pr fil *>
if test then wr_test (<:fil:>, f);
for b := blokke - 1 step - 1 until 0 do
begin <* pr blok *>
setposition (z, f, b);
l := extend testnr shift 40 + extend f shift 32 + extend b shift 24;
if test then wr_test (<:blok:>, b);
inrec6 (z, buflgd * 512);
for lf := 4 step if datacheck then 4 else 32 * 4 until buflgd * 512 do
if z.lf <> l + lf
then
begin <* fejl *>
antal_fejl (nr) := antal_fejl (nr) + 1;
ejok := ejok + 1;
fejl (<:Fejl ved seq read backwards:>, - 1);
write (out, <<d>, <:fil.:>, f, <:, blok.:>, b, <:, adr.:>, lf,
"nl", 1, <:(nr.fil.blok.adr / nr < 40 + fil < 32 + blok < 24 + adr):>);
wr_z_tape (l + lf, z.lf);
if ejok >= stop then
begin <* for mange fejl *>
wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
f := 0;
b := 0;
lf := buflgd * 512;
end for mange fejl;
end fejl;
segment_nr (nr) := segment_nr (nr) - buflgd;
end pr blok;
end pr fil;
close (z, false);
rback := ejok;
end procedure rback;
for mk := 0 shift 12 + 18, 4 shift 12 + 18 do
begin
write (out, "nl", 1, <:tapetest med :>,
"sp", 1, if mk shift (- 14) extract 1 = 0 then <:high:> else <:low:>,
<: density:>);
if online then setposition (out, 0, 0);
open (z, mk, name, 1 shift 9);
setposition (z, 0, 0); <* fortæl keystone om high/low density *>
setposition (z, 0, 0); <* fortæl keystone om high/low density *>
close (z, false);
wseq (1, name, mk, 3, 3, 10, 84, 1);
ejok := rback (1, name, mk, 3, 3, 10, 84, 1)
+ rseq (1, name, mk, 3, 3, 10, 84, 1);
sh := if shares > 0 then shares else 3;
bu := 0;
repeat
bu := if buflgd > 0 and buflgd <= 84 then buflgd else
if bu <= 0 then 1 else 84;
bl := if maxsegm > 0 then (maxsegm + bu - 1) // bu else 100;
if bl < 1 then bl := 1;
wseq (1, name, mk, sh, 1, bl, bu, 1);
ejok := ejok + rseq (1, name, mk, sh, 1, bl, bu, 1)
until buflgd > 0 or bu >= 84;
end;
close (z, true);
test_tape := antal_fejl (1);
end procedure test_tape;
\f
integer procedure test_ioc;
begin
<* skriv og læs i diskfil,
bufferplaceringen i lagret ændres i spring på 2 over 16 halvordsadr
segmentantallet pr io ændres fra 1 til 88 ( lidt over 64kbyte)
der checkes om der skrives ved siden af det forventede
*>
integer i, j, k, adr, adr_base, adr_rel, buf_start, buf_slut, segm, ant_fejl;
integer array tail (1 : 10), ia (1 : 20);
long array name, disk (1 : 2);
integer field inf;
zone z (128 * 90, 1, xstderror);
procedure io (z, fra, til, input);
zone z;
integer fra, til;
boolean input;
begin
<* lav io vha z med buffer startende i fra og sluttende i til
hvor fra og til kan opfattes som integer array fields
hvis input er true laves input ellers output
*>
integer array zd (1 : 20), sh (1 : 12);
integer i, j;
if test then
begin
wr_test (if input then <:input:> else <:output:>, (til - fra) // 512);
write (out, <: segm, fra.:>, <<d>, fra, <: til.:>, til);
end test;
getzone6 (z, zd);
getshare6 (z, sh, 1);
zd (17) := 1; <* used share *>
sh (1) := 0; <* free share *>
sh (2) := 1; <* first shared *>
sh (3) := sh (2) + zd (20) * 4 - 1; <* last shared *>
if input
then sh (4) := 3 shift 12 + 0 <* input *>
else sh (4) := 5 shift 12 + 0; <* output *>
sh (5) := zd (19) + sh (2) + fra; <* first abs adr *>
sh (6) := sh (5) + (til - fra); <* last abs adr *>
sh (7) := 0; <* segm count *>
sh (8) := sh (9) := sh (10) := sh (11) := 0; <* ubenyttet *>
sh (12) := sh (5); <* top transferred *>
setzone6 (z, zd);
setshare6 (z, sh, 1);
if monitor (16, z, 1, ia) = 0
then system (9, 6, <:<10>break:>);
i := monitor (18, z, 1, ia);
if i <> 1 then xstderror (z, 1 shift i, 0) else
if ia (1) <> 0 then xstderror (z, ia (1), ia (2));
end procedure io;
getzone6 (z, ia);
adr_rel := (ia (19) + 2) // 2 * 2; <* første ordadr i buffer *>
system (5, ownadr + 98, ia); <* get current base *>
adr_base := ia (1); <* processens relative forskydning *>
if test then
begin
wr_test (<:io test, adresser::>, - 1);
write (out, <<d>,
<: proc-base=:>, adr_base,
<: z-rel-adr=:>, adr_rel,
<: buf-rel-adr=:>, adr);
if online then setposition (out, 0, 0);
end test;
ant_fejl := 0;
makename (1, name, 'i');
open (z, 4, name, 1 shift 9);
close (z, true);
monitor (48, z, 0, tail); <* clear evt gammel fil *>
tail (1) := 88;
tofrom (tail.laf2, disc1, 8);
tail (6) := systime (7, 0, 0.0);
tail (7) := tail (8) := tail (9) := tail (10) := 0;
if monitor (40, z, 0, tail) <> 0 <* create fil *>
then fejl (<:Fejl ved create entry, for få resourcer:>, - 1)
else
if monitor (92, z, 0, tail) <> 0 <* entry lock *>
or monitor (8, z, 0, tail) <> 0 <* reserve *>
then fejl (<:Fejl ved reserve:>, - 1)
else
begin
for adr := 0 step 2 until 16 - 2 do <* varier startadr i buffer *>
begin
write (out, "nl", 1, <:io til/fra absolut lageradresse:>, adr_base + adr_rel + adr);
if online then setposition (out, 0, 0);
for segm := 1 step 1 until 88 do <* varier bufferlængde *>
begin
buf_start := 512 + adr;
buf_slut := segm * 512 + buf_start;
for inf := 2 step 2 until buf_start,
buf_slut + 2 step 2 until 90 * 512
do z.inf := - 5 592 406; <* AAAAAAh i alt udenom buf *>
for inf := buf_start + 2 step 2 until buf_slut
do z.inf := inf - buf_start; <* hw adr i buf *>
io (z, buf_start, buf_slut, false); <* skriv til disk *>
<* fyld bufferdelen af lagret med AAAAAAh *>
for inf := buf_start + 2 step 2 until buf_slut
do z.inf := - 5 592 406; <* AAAAAAh i buf *>
io (z, buf_start, buf_slut, true); <* læs fra disk *>
<* check omgivelser omkring buf *>
for inf := 2 step 2 until buf_start,
buf_slut + 2 step 2 until 90 * 512 do
if z.inf <> - 5 592 406 then
begin <* fejl *>
ant_fejl := ant_fejl + 1;
fejl (<:Fejl læsning til lageradr.:>, adr_base + adr_rel + inf);
write (out, <: segm pr io:>, segm,
"nl", 1, <:lager udenom buffer ødelagt:>,
"nl", 1, <:forventet: :>, string xhex (- 5 592 406, 6), "H", 1,
<: fundet: :>, string xhex (z.inf, 6), "H", 1);
if online then setposition (out, 0, 0);
if pause then system (10, 1, <:<10>pause pga fejl:>); <* pause *>
end fejl;
<* check bufferindhold *>
for inf := buf_start + 2 step 2 until buf_slut do
if z.inf <> inf - buf_start then <* hw adr i buf *>
begin <* fejl *>
ant_fejl := ant_fejl + 1;
fejl (<:Fejl læsning til lageradr.:>, adr_base + adr_rel + inf);
write (out, <: segm pr io:>, segm,
"nl", 1, <:fejlagtige data fundet:>,
"nl", 1, <:forventet: :>, string xhex (inf, 6), "H", 1,
<: fundet: :>, string xhex (z.inf, 6), "H", 1);
if online then setposition (out, 0, 0);
if pause then system (10, 1, <:<10>pause pga fejl:>); <* pause *>
end fejl;
end varier segm;
end varier adr;
end create entry ok;
open (z, 4, name, 1 shift 9);
close (z, true);
if ant_fejl = 0 then monitor (48, z, 0, tail) <* clear fil hvis ok *>
else write (out, "nl", 1, <:pga. fejl slettes :>, name,
<: på :>, disc1, <: ikke:>);
test_ioc := ant_fejl;
end procedure test_ioc;
\f
if not trapstop then trap (trap_ud);
antal := 1;
test_proc := true;
xnulstil (sidst_rørt);
xnulstil (antal_io);
xnulstil (blok_lgd);
xnulstil (segment_nr);
xnulstil (bs_nr);
xnulstil (antal_fejl);
xnulstil (aktivitet);
if testno = 11 then
begin <* integer *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Integer regning (+, -, *, //, mod):>);
if online then setposition (out, 0, 0);
test_integer;
end integer
else
if testno = 12 then
begin <* long *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Long regning (+, -, *, //, mod):>);
if online then setposition (out, 0, 0);
test_long;
end long
else
if testno = 13 then
begin <* real *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Real regning (+, -, *, /):>);
if online then setposition (out, 0, 0);
test_real;
end real
else
if testno = 14 then
begin <* exponentiation *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Exponentiationsberegninger (integer, long, real):>);
if online then setposition (out, 0, 0);
test_exp;
end exponentiation
else
if testno = 21 then
begin <* tofrom *>
i := xmaxbuflgd (10, if corelock then 1000 else 4000, true) - 50; <* ca 50 hw til zonedescr mv *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Tofrom lagerflytninger (10 * :>, i, <: hw):>);
if online then setposition (out, 0, 0);
test_tofrom (i);
end tofrom
else
if testno = 31 then
begin <* sieve *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Sieve-benchmark (25000):>);
if online then setposition (out, 0, 0);
mål_sieve (antal, 25000);
end sieve
else
if testno = 32 then
begin <* quicksort *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Quicksort (25000 words):>);
if online then setposition (out, 0, 0);
mål_qsort (antal, 25 000);
end qsort
else
if testno = 33 then
begin <* shellsort *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Shellsort (25000 words):>);
if online then setposition (out, 0, 0);
mål_ssort (antal, 25 000);
end ssort
else
if testno = 34 then
begin <* heapsort *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Heapsort (25000 words):>);
if online then setposition (out, 0, 0);
mål_hsort (antal, 25 000);
end hsort
else
if testno = 35 then
begin <* matrix *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Matrixberegning (50x50 words):>);
if online then setposition (out, 0, 0);
mål_matrix (antal, 50);
end matrix
else
if testno = 36 then
begin <* flydende matrix *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Matrixberegning med flydende tal (50x50 reals):>);
if online then setposition (out, 0, 0);
mål_fmatrix (antal, 50);
end fmatrix
else
if testno = 51 then
begin <* write seq *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Disktest, seq write, cross read:>);
if online then setposition (out, 0, 0);
j := abs test_disk (1, antbs, antdiske);
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<:disktest slut,:>, <<-d>, j, <: fejl:>);
if online then setposition (out, 0, 0);
end seq
else
if testno = 56 then
begin <* write cross *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Disktest, cross write, seq read:>);
if online then setposition (out, 0, 0);
j := abs test_disk (2, antbs, antdiske);
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<:disktest slut,:>, <<-d>, j, <: fejl:>);
if online then setposition (out, 0, 0);
end cross
else
if testno = 59 then
begin <* copy *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Disktest, disk-disk-copy:>);
if online then setposition (out, 0, 0);
test_disk (3, antbs, antdiske); <* lav filer *>
j := abs test_disk (5, antbs, antdiske); <* copy *>
test_disk (4, antbs, antdiske); <* slet filer *>
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<:disktest slut,:>, <<-d>, j, <: fejl:>);
if online then setposition (out, 0, 0);
end copy
else
if testno = 61 then
begin <* tape *>
mt_no := mt_no + 1;
makename (mt_no, la, 't');
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:Tapetest (:>, la, <:):>);
if online then setposition (out, 0, 0);
j := abs test_tape (la);
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<:tapetest slut:>, <<-d>, j, <: fejl:>);
if online then setposition (out, 0, 0);
end tapetest
else
if testno = 71 then
begin <* ioc *>
writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1,
<<d>, <:IOC-test:>);
if online then setposition (out, 0, 0);
j := test_ioc;
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<:IOC-test slut:>, <<-d>, j, <: fejl:>);
if online then setposition (out, 0, 0);
end ioctest
else
test_proc := false; <* ukendt test *>
if false then
trap_ud:
begin
xwritealarm;
xtrapbreak;
fejl (<:programnedgang:>, - 1);
end;
end procedure test_proc;
▶EOF◀