|
|
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: 28416 (0x6f00)
Types: TextFile
Names: »tsystest «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
└─⟦f546e193b⟧
└─⟦this⟧ »tsystest «
clear user osystest
osystest = set 400 disc1
scope user osystest
lsystest = set 300 disc1
o lsystest
head iso
( osystest=algol list.on blocks.yes connect.no ix.no ,
, spill.yes ,
, survey.yes details.8.8 ,
, xref.yes ,
list.on copy.tsystest1 , datatestprocedurer
list.on copy.tsystest2 , randomprocedurer
list.on copy.tsystest3 , checkprocedurer part 1
list.on copy.tsystest4 , checkprocedurer part 2
list.on copy.tsystest5 , måleprocedurer part 1
list.on copy.tsystest6 , måleprocedurer part 2
list.on copy.tsystest7 , måleprocedurer part 3
list.on
if ok.yes
if warning.yes
( o c
message kikset
visfejl lsystest
finis
)
o c
message ok
scope user osystest
end
)
begin
procedure help;
begin
writeint (out, <:
jsc d. 1/6-1989
program: osystest v.:>, <<d.d>, rel, vers, 1, <:
formål: test af cpu mv.'s ydeevne til sammenligningsformål
kald: (ud = ) osystest ,
(antal.<antal>) ,
(bloklgd.<bloklgd>) ,
(cpu.<cpuer>) ,
(check.<janej> ,
(disk.<disk>(.<disk>)) ,
(kl.<ja/nej>) ,
(lock.<ja/nej>) ,
(pause.<ja/nej>) ,
(record.<ja/nej>) ,
(segm.<segm>) ,
(shares.<shares>) ,
(stop.<antal>) ,
(tid(.<min>).<sek>) ,
(trap.<ja/nej>) ,
,
(test.alle) ,
(test.cpu) ,
(test.disk) ,
(test.ioc) ,
,
(mål.alle) ,
(mål.bench) ,
(mål.cat) ,
(mål.cpu) ,
(mål.disk) ,
(mål(.1)(.2)(.3)....)
antal ::= angiver antal gennemløb for hver måling,
ved disk angives antal filegennemløb
default er benyttelse af tid
bloklgd ::= antal segmenter pr io
default er 1, 32, 46
check ::= check alle data for disk/tape-io
hvis nej checkes 1/32'del
default er check.nej
cpu ::= angiver antal ønskede cpu'er der skal benyttes
default er 1 for mål og ellers alle
disk ::= disk benyttet for diskacces og katalogoprettelser
evt. kan endnu en disk angives,
denne vil blive benyttet som tildisk ved kopiering
default er uspecificeret
kl ::= udskriv klokkeslet hver gang klokken aflæses
default er kl.nej
lock ::= lock af programmet
default er lock.nej
pause ::= pause meddelelse til operativsystemet ved fejl
default er pause.nej
record ::= optag resultater til test
segm ::= antal segmenter afsat i filen
default antal segmenter til rådighed på disken
shares ::= antal shares benyttet ved diskacces
default er 1, 2
stop ::= stop den enkelte test ved observeret anta fejl
default er 10 fejl
tid ::= antal minutter.sekunder eller sekunder estimeret
forbrugt pr test på en rc8000 med cpu 823/824 samt fpu
default er tid.0.30
trap ::= fortsæt efter programfejl
default er trap.ja
test: de under mål med "*" markerede numre kan benyttes
til test
test:
-cpu ::= udførelse af alle cpu og mem tests
-bench ::= udførelse af diverse benchmarks
-disk ::= udførelse af alle diskkrævende test
-tape ::= udførelse af tapetest
-ioc ::= udførelse af test om ioc rammer lagret
-alle ::= udførelse af alle test på nær tape
mål:
-cpu ::= udførelse af alle cpu og mem målinger (0..29)
-bench ::= udførelse af diverse benchmarks (30..39)
-cat ::= udførelse af katalogbaserede målinger (40..49)
-disk ::= udførelse af alle diskkrævende målinger (50..59)
-alle ::= udførelse af alle test (0..99)
mål.1 ::= måling af for løkke
der udføres for i := 1 step 1 until xx do ;
mål.2 ::= måling af repeat
der udføres repeat i := i + 1 until xx;
mål.3 ::= måling af while
der udføres while i < xx do i := i + 1;
* mål.11 ::= måling af integer regning
der udføres plus, minus, gange, division og exponentation
* mål.12 ::= måling af long regning
der udføres plus, minus, gange, division og exponentation
* mål.13 ::= måling af real regning
der udføres plus, minus, gange, division og exponentation
* mål.14 ::= måling af exponentation
der måles på integer, long og real
* mål.21 ::= måling af move core vha. tofrom
der udføres tofrom på antal * 1k bytes
mål.22 ::= måling af move core vha. system-5
der udføres system-5 på antal * 1k byte
mål.23 ::= måling af systime-1
gentagne systime-1 (get-system-time)
* mål.31 ::= sieve-benchmark v.1.0 (Byte june 1988)
udregning af primtal,
brug af: arrayindexing, sammenligning og simpel regning
* mål.32 ::= quick-sort-benchmark (Byte june 1988)
kraftig brug af: rekursive procedurekald
brug af: arrayindexing, sammenligning og simpel regning
* mål.33 ::= shell-sort-benchmark (Byte june 1988)
kraftig brug af: loop
brug af: arrayindexing, sammenligning og simpel regning
* mål.34 ::= heap-sort-benchmark (Byte june 1988)
kraftig brug af: kald af underprocedure
brug af: arrayindexing, sammenligning og simpel regning
* mål.35 ::= matrix-benchmark (Byte june 1988)
matrixadition, multiplikation og transportation
brug af: indexing og integer regning
* mål.36 ::= matrix-benchmark med flydende tal
matrixadition, multiplikation og transportation
brug af: indexing og real regning
mål.41 ::= måling af katalogoprettelse/sletning
gentagne monitor-40, 50 og 48 (create, permanent, clear)
mål.42 ::= måling af katalogændring mht. size
gentagne monitor-44 (changeentry), ændret size
mål.43 ::= måling af katalogændring mht. tail (6)
gentagne monitor-44 (changeentry), ændret shortclock
* mål.51 ::= måling af disk-write seq.
sekventiel skrivning af givent antal filer
mål.52 ::= måling af disk-read seq
sekventiel læsning af givent antal filer
mål.53 ::= måling af disk-write random
random skrivning af givent antal filer
mål.54 ::= måling af disk-read random
random læsning af givent antal filer
mål.55 ::= måling af disk-read/rewrite random
random læsning og genskrivning af givent antal filer
* mål.56 ::= måling af disk-write inderst/yderst stepvis mod hinanden
skrivning af et givent antal filer
skrivningen foregår blok for blok samtidig fra hver sin
ende af filen, fx i 8 blokke lang fil skrives blokkene
0, 7, 1, 6, 2, 5, 3, 4, 4, 3, 5, 2, 6, 1, 7, 0, 0, 7, 1...
mål.57 ::= måling af disk-read inderst/yderst stepvis mod hinanden
skrivning af et givent antal filer
skrivningen foregår blok for blok samtidig fra hver sin
ende af filen, fx i 8 blokke lang fil skrives blokkene
0, 7, 1, 6, 2, 5, 3, 4, 4, 3, 5, 2, 6, 1, 7, 0, 0, 7, 1...
mål.58 ::= måling af disk-read/write inderst/yderst stepvis
mod hinanden
skrivning af et givent antal filer
skrivningen foregår blok for blok samtidig fra hver sin
ende af filen, fx i 8 blokke lang fil skrives blokkene
0, 7, 1, 6, 2, 5, 3, 4, 4, 3, 5, 2, 6, 1, 7, 0, 0, 7, 1...
* mål.59 ::= måling af disk-kopiering
samtidig udførelse af læse og skrive-operation på hver
sin fil af givent antal filer
* mål.61 ::= test af tape
sekventiel skrivning af givent antal segmenter
krydslæsning til kontrol
* test.71 ::= test af ioc
disk skrivning og læsning fra varierende adresser i lagret
test om lagret mappes korrekt
generelt: maximal tilladt afvigelse for reals er 1/20000000000
af den forventede værdi:>, "nl", 1)
end procedure help;
<*
målinger:
der måles på lidt af hvert, det er overordentlig svært at
sammenligne rc8000/rc9000 med de maskiner der skrives om
i de kulørte blade, derfor er der opstillet en række belastninger
af cpu, mem og disk.
check:
aftestningen foretages henholdsvis ved at sammenligne resultater
fra udførte beregninger med resultater fra samme beregninger
udført på en referancemaskine, desuden udskrives kendte bitmønstre
i memory, der derefter manipuleres og slutelig skal ende med
det forventede.
diskene testes ved at udskrive kendte bitmønstre sekventielt samt
på kryds, derefter aflæses mønstrene og det forventede skulle
gerne stå der. Til slut kopieres imellem samtlige diske, multibufret
og i et coroutine system, således at data har en chance for at
snuble over sig selv. Resultatfilerne checklæses sekvientielt.
*>
integer rel, monrel, antcpu, shares, buflgd, maxsegm, testno, målno, mtno,
stop, antbs, antdiske, res, ownadr, maxno, algvers, algrel, algsubrel, rand,
fp, i, j, k, i1, i2, i3, i4, i5, c;
boolean vers, online, corelock, datawrite, datatest, datacheck,
fejlet, kl, test, trapstop, pause, b, b1, b2;
long sek, nr, antal, l, l1, l2, l3, l4, l5;
long begin_tid, end_tid, tid, loop_tid, test_tid;
real r, r1, r2, r3, r4, r5;
integer array ia, ia1 (1 : 20);
long array disc1, disc2, la, la1 (1 : 2);
integer array field iaf, iaf0, iaf2;
long array field laf, laf0, laf2;
zone zhelp (1, 1, xstderror);
procedure fejl (txt, tal);
value tal;
string txt;
integer tal;
begin
fejlet := true;
errorbits := 1 shift 0 + 1 shift 1;
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1, txt, "sp", 1);
if tal <> - 1 then write (out, <<d>, tal, "sp", 1);
if online then setposition (out, 0, 0);
end procedure fejl;
procedure wr_test (txt, tal);
value tal;
string txt;
integer tal;
begin
writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1, txt, "sp", 1);
if tal <> - 1 then write (out, <<d>, tal, "sp", 1);
if online then setposition (out, 0, 0);
end procedure wr_test;
procedure skriv_tid (enhed, antal);
value antal;
string enhed;
long antal;
begin
integer pos;
if tid < 1 0000 and antal < 100 000
then write (out, "nl", 1, <:*** måling udført over for kort tid:>);
pos := writeint (out, "nl", 1, <<zddd.dd>, xkl, ":", 1,
<<d>, antal, "sp", 1, enhed, <: på :>, <<d.dddd>, tid, <: sek,:>) - 1;
pos := pos + writeint (out, "sp", 10 - pos mod 10,
<<d>, antal * 10000 // tid, "sp", 1, enhed, <: pr sek,:>);
if tid // antal < 10
then pos := pos + writeint (out, "sp", 10 - pos mod 10,
<<d.ddd d>, tid * 1000 // antal, <: ms pr :>, enhed)
else pos := pos + writeint (out, "sp", 10 - pos mod 10,
<<d.ddd>, tid * 100 // antal, <: ms pr :>, enhed);
if online then setposition (out, 0, 0);
end procedure skriv_tid;
procedure makename (no, name, extension);
integer no, extension;
long array name;
begin
<* lav navnet "wrksysxxxy"
hvor xxx er no
og y er tegnet angivet som extension
*>
name (1) := long <:wrksy:> add 's';
name (2) := long <::>
+ extend (no // 100 mod 10 + '0') shift 40
+ extend (no // 10 mod 10 + '0') shift 32
+ extend (no // 1 mod 10 + '0') shift 24
+ extension shift 16;
if no > maxno then maxno := no;
end procedure makename;
long procedure systemtid (ref, reel);
value ref;
long ref, reel;
begin
<* returnerer cputiden forbrugt i 0,1 ms
reel returnerer den reelle tid i 0,1 ms siden ref
*>
long array la, la1 (1 : 1);
repeat
system (5, 108, la); <* get clockcell *>
system (5, 108, la1); <* get clockcell *>
until la (1) = la1 (1); <* så ikke under opdatering *>
reel := la (1) - ref;
systemtid := la (1);
if kl then write (out, "nl", 1, <<dddddddd dddd>,
<:kl.:>, la (1) shift 12 shift (- 12),
<:, ref.:>, ref shift 12 shift (- 12),
<:, reel.:>, (la (1) - ref) shift 12 shift (- 12));
end procedure systemtid;
\f
algol copy.1; <* div datatest *>
\f
algol copy.2; <* div random *>
\f
algol copy.3; <* div checkprocedurer part 1 *>
\f
algol copy.4; <* div checkprocedurer part 2 *>
\f
algol copy.5; <* div måleprocedurer part 1 *>
\f
algol copy.6; <* div måleprocedurer part 2 *>
\f
algol copy.7; <* div måleprocedurer part 3 *>
\f
<* body *>
rel := 1 0; <* release * 10 *>
vers := "B"; <* små bogstaver for testversioner, store for rettelser *>
system (13, algvers, ia);
algrel := ia (1) shift (- 12);
algsubrel := ia (1) extract 12;
fejlet := false;
iaf := iaf0 := laf := laf0 := 0;
iaf2 := laf2 := 2;
ownadr := system (6, i, la); <* get own adr *>
system (5, 64, ia); <* get monitor version *>
monrel := ia (1); <* rel < 12 + vers *>
system (5, 92, ia); <* get ant bs-devices *>
antbs := (ia (3) - ia (1)) // 2; <* drums and discs *>
antdiske := 0;
for i := 0 step 1 until antbs - 1 do
if xclaimproc (0, i, la, 0, 0, 0) and la (1) <> long <::>
then antdiske := antdiske + 1; <* tæl faktiske diske *>
fp := if xconnectout then 2 else 1;
getzone6 (out, ia);
online := ia (1) <> 4;
if system (4, fp, la) = 0 then
begin <* help og så slut *>
help;
goto uden_param; <* slut *>
end;
xhost (la);
write (out, "nl", 1, "-", 75, "nl", 1,
<:Systemtest v.:>, <<d.d>, rel / 10, vers, 1,
if rc8000 then <: Rc8000 :> else <: Rc9000 :>, la,
<: d.:>, <<dddddd.dddd>, systime (5, 0, r) + r / 1 00 00 00,
<: monitor :>, <<d>, monrel shift (- 12), ".", 1, monrel extract 12);
if online then setposition (out, 0, 0);
<* default *>
antcpu := 0; <* 0 = uændret, - 1 = 1 v mål ellers alle *> <* dont touch *>
sek := 30;
antal := - 1;
maxsegm := - 1;
shares := - 1;
buflgd := - 1;
stop := 10;
disc1 (1) := disc2 (1) := long <::>;
disc1 (2) := disc2 (2) := long <::>;
test := datawrite := datatest := false;
datacheck := false;
corelock := false;
trapstop := false;
pause := false;
kl := false;
initrandom (<:systestrand:>);
mt_no := 0;
maxno := 0;
if corelock then lock (0, progsize - 1);
for res := system (4, fp, la) while res <> 0 do
begin
if trapstop then trap (0) else trap (trap_næste_1);
la (1) := la (1) shift (- 32) shift 32; <* kun test på 2 tegn *>
if res extract 12 < 10
then fejl (<:Parameterfejl, param nr.:>, fp)
else
if la (1) = long <:an:> then
begin <* antal.<tal> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
antal := la (1);
fp := fp + 1;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end antal
else
if la (1) = long <:bl:>
or la (1) = long <:bu:> then
begin <* bloklgd.<segm> eller buflgd.<segm> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
buflgd := la (1);
fp := fp + 1;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end bloklgd
else
if la (1) = long <:ch:> then
begin <* check.<ja/nej> *>
if system (4, fp + 1, la) <> 8 shift 12 + 10
then la (1) := long <:ja:> <* ingen <ja/nej> opfattes som ja *>
else fp := fp + 1; <* ja/nej angivet *>
if la (1) = long <:ja:> or la (1) = long <:yes:>
then datacheck := true
else
if la (1) = long <:nej:> or la (1) = long <:no:>
then datacheck := false
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end check
else
if la (1) = long <:cp:> then
begin <* cpu.<tal> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
antcpu := la (1);
fp := fp + 1;
system (5, 128, ia); <* get antal cpu'er *>
if ia (1) = antcpu then antcpu := 0; <* allerede ok *>
if antcpu > 0 then
begin <* sæt antal cpu'er *>
monitor (34, zhelp, antcpu, ia); <* sæt antal cpu'er *>
system (5, 128, ia); <* get antal cpuer *>
if ia (1) <> antcpu
then fejl (<:kan ikke sætte korrekt cpuantal, der er:>, ia (1));
end sæt antal cpu'er;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end cpu
else
if la (1) = long <:di:> then
begin <* disc.<disc>(.<disc>) *>
if system (4, fp + 1, la) >= 8 shift 12 + 10 then
begin
tofrom (disc1, la, 8);
fp := fp + 1;
if system (4, fp + 1, la) >= 8 shift 12 + 10 then
begin <* til disc *>
tofrom (disc2, la, 8);
fp := fp + 1;
end
else tofrom (disc2, disc1, 8);
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end disc
else
if la (1) = long <:kl:> then
begin <* kl.<ja/nej> *>
if system (4, fp + 1, la) <> 8 shift 12 + 10
then la (1) := long <:ja:> <* ingen <ja/nej> opfattes som ja *>
else fp := fp + 1; <* ja/nej angivet *>
if la (1) = long <:ja:> or la (1) = long <:yes:>
then kl := true
else
if la (1) = long <:nej:> or la (1) = long <:no:>
then kl := false
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end kl
else
if la (1) = long <:lo:> then
begin <* lock(.<ja/nej>) *>
if system (4, fp + 1, la) <> 8 shift 12 + 10
then la (1) := long <:ja:> <* ingen <ja/nej> opfattes som ja *>
else fp := fp + 1; <* ja/nej angivet *>
b := corelock;
if la (1) = long <:ja:> or la (1) = long <:yes:> then corelock := true
else
if la (1) = long <:nej:> or la (1) = long <:no:> then corelock := false
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
if b == corelock then <* allerede etableret *> else
if corelock then lock (0, progsize - 1)
else progmode := - (progsize - 1); <* unlock *>
end test
else
if la (1) = long <:må:> then
begin <* mål./alle/cpu/disc/bench/<nr> *>
write (out, "nl", 1, <:Performancemåling:>,
if corelock then <: (corelock):> else <::>);
if online then setposition (out, 0, 0);
if antcpu < 0 then
begin <* sæt antal cpu'er til 1 *>
monitor (34, zhelp, 1, ia); <* sæt antal cpu'er *>
system (5, 128, ia); <* get antal cpuer *>
if ia (1) <> 1
then fejl (<:kan ikke sætte cpuantal til en, der er:>, ia (1));
end sæt antal cpu'er;
for res := system (4, fp + 1, la) while res shift (- 12) = 8 do
begin <* while mål *>
fp := fp + 1;
if res extract 12 < 10 then
begin <* mål.<no> *>
målno := la (1);
if not mål_proc (målno) then fejl (<:ukendt måling, nr.:>, målno);
end målno
else
begin <* mål.txt *>
la (1) := la (1) shift (- 32) shift 32; <* test på 2 tegn *>
if la (1) = long <:al:> then
begin <* alle *>
for målno := 0 step 1 until 99 do mål_proc (målno);
end alle
else
if la (1) = long <:be:> then
begin <* bench *>
for målno := 30 step 1 until 39 do mål_proc (målno);
end bench
else
if la (1) = long <:cp:> then
begin <* cpu *>
for målno := 0 step 1 until 29 do mål_proc (målno);
end cpu
else
if la (1) = long <:ca:> or la (1) = long <:ka:> then
begin <* catalog *>
for målno := 40 step 1 until 49 do mål_proc (målno);
end catalog
else
if la (1) = long <:di:> then
begin <* disc *>
for målno := 50 step 1 until 59 do mål_proc (målno);
end disc
else fejl (<:ukendt måling, parameter nr.:>, fp + 1);
end txt;
if online then setposition (out, 0, 0);
if antcpu < 0 then
begin
i := 1;
while monitor (34, zhelp, i, ia) = 1 do i := i + 1; <* alle cpu'er *>
end;
end while mål;
end mål
else
if la (1) = long <:pa:> then
begin <* pause.<ja/nej> *>
if system (4, fp + 1, la) <> 8 shift 12 + 10
then la (1) := long <:ja:> <* ingen <ja/nej> opfattes som ja *>
else fp := fp + 1; <* ja/nej angivet *>
if la (1) = long <:ja:> or la (1) = long <:yes:>
then pause := true
else
if la (1) = long <:nej:> or la (1) = long <:no:>
then pause := false
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end trap
else
if la (1) = long <:re:> then
begin <* record.<ja/nej> *>
if system (4, fp + 1, la) = 8 shift 12 + 10 then
begin
datatest := datawrite := la (1) = long <:ja:> or la (1) = long <:yes:>;
fp := fp + 1;
if datawrite then
begin <* optadg data *>
write (out, "nl", 1, <:Record resultater i "systestdata":>);
if online then setposition (out, 0, 0);
for testno := 11, 12, 13, 14, 31, 32, 33, 34, 35, 36
do test_proc (testno);
end write;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end record
else
if la (1) = long <:se:> then
begin <* segm.<tal> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
maxsegm := la (1);
fp := fp + 1;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end segm
else
if la (1) = long <:sh:> then
begin <* shares.<tal> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
shares := la (1);
fp := fp + 1;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end shares
else
if la (1) = long <:st:> then
begin <* stop.<antal> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
stop := la (1);
fp := fp + 1;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end stop
else
if la (1) = long <:te:> then
begin <* test.ja/nej/alle/cpu/disc/tape/<nr> *>
write (out, "nl", 1, <:Modultest:>,
if corelock then <: (corelock):> else <::>,
if datacheck then <: med:> else <: uden:>,
<: fuld io-datakontrol:>);
if online then setposition (out, 0, 0);
datatest := true;
for res := system (4, fp + 1, la) while res shift (- 12) = 8 do
begin <* while test *>
fp := fp + 1;
if res extract 12 < 10 then
begin <* test.<no> *>
testno := la (1);
if not test_proc (testno) then fejl (<:ukendt test, nr.:>, testno);
end testno
else
begin <* test.txt *>
la (1) := la (1) shift (- 32) shift 32; <* test på 2 tegn *>
if la (1) = long <:ja:> or la (1) = long <:ye:> then
begin <* test.ja *>
test := true;
end ja
else
if la (1) = long <:ne:> or la (1) = long <:no:> then
begin <* test.nej *>
test := false;
end ja
else
if la (1) = long <:al:> then
begin <* alle (undtagen tape) *>
for testno := 11, 12, 13, 14, 21, 31, 32, 33, 34, 35, 36, 51, 56, 59
do test_proc (testno);
end alle
else
if la (1) = long <:be:> then
begin <* bench *>
for testno := 31, 32, 33, 34, 35, 36 do test_proc (testno);
end alle
else
if la (1) = long <:cp:> then
begin <* cpu *>
for testno := 11, 12, 13, 14, 21 do test_proc (testno);
end cpu
else
if la (1) = long <:di:> then
begin <* disc *>
for testno := 51, 56, 59 do test_proc (testno);
end disc
else
if la (1) = long <:io:> then
begin <* ioc *>
for testno := 71 do test_proc (testno);
end ioc
else
if la (1) = long <:ta:> then
begin <* tape *>
for testno := 61 do test_proc (testno);
end tape
else fejl (<:ukendt test, parameter nr.:>, fp + 1);
end txt;
if online then setposition (out, 0, 0);
end while test;
datatest := false;
end test
else
if la (1) = long <:ti:> then
begin <* tid(.<min>).<sek> *>
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
antal := - 1;
sek := la (1);
fp := fp + 1;
if system (4, fp + 1, la) = 8 shift 12 + 4 then
begin
sek := sek * 60 + la (1);
fp := fp + 1;
end;
end ok
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end tid
else
if la (1) = long <:tr:> then
begin <* trap.<ja/nej> *>
if system (4, fp + 1, la) <> 8 shift 12 + 10
then la (1) := long <:ja:> <* ingen <ja/nej> opfattes som ja *>
else fp := fp + 1; <* ja/nej angivet *>
if la (1) = long <:ja:> or la (1) = long <:yes:>
then trapstop := false
else
if la (1) = long <:nej:> or la (1) = long <:no:>
then trapstop := true
else fejl (<:Parameterfejl, param nr.:>, fp + 1);
end trap
else fejl (<:Ukendt parameter, param nr.:>, fp);
if false then
trap_næste_1:
begin
xwritealarm;
xtrapbreak;
fejl (<:programnedgang:>, - 1);
if not trapstop then trap (trap_heltyt);
end;
if not trapstop then trap (trap_heltyt);
if online then setposition (out, 0, 0);
fp := fp + 1;
end while fp;
exitrandom;
write (out, "nl", 1, "-", 75);
if false then
trap_heltyt:
begin <* trapped *>
xwritealarm;
fejl (<:programnedgang:>, - 1);
end trapped;
if antcpu <> 0 then
begin
i := 1;
while monitor (34, zhelp, i, ia) = 1 do i := i + 1; <* alle cpu'er *>
end;
if fejlet then write (out, "nl", 1, <:fejl observeret!!:>, "nl", 1, "-", 75);
outchar (out, 'nl');
xconnectout;
for i := 1 step 1 until maxno do
for c := 'nul', 'i', 'o' do
begin <* slet wrk filer *>
makename (i, la, c);
open (zhelp, 0, la, 0);
close (zhelp, true);
monitor (48, zhelp, 0, ia); <* clear evt gammel fil *>
end;
uden_param:
if blocksread <= 1000 then trapmode := 1 shift 10; <* undertryk end xxx *>
end
▶EOF◀