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