|
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: 3840 (0xf00) Types: TextFile Names: »fpparamtx«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦80900d603⟧ »giprocfile« └─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦80900d603⟧ »giprocfile« └─⟦this⟧
fp_param = set 1 fpparam=algol external boolean procedure fp_param(paramname,descriptor,result); array paramname; <*kald: navnet på den ønskede parameter*> integer array descriptor; <*retur: se dokumentation *> array result; <*retur: -''- *> begin integer sepleng,sep,leng, item, i,desc_i,res_i, low1,low2,high_desc,high_res; boolean found; array ar(1:2); boolean oneword; integer ws; procedure next; begin item:=item+1; sepleng:=system(4,item,ar); sep:=sepleng shift (-12) extract 12; leng:=sepleng extract 12; end; if -,check_fp_call(i) then begin fp_param:=false; goto ud; end; oneword:= paramname(1) extract 8 = 0 or paramname(2) shift (-40) extract 8 = 0; for i:= -40 step 8 until 8 do if paramname(if oneword then 1 else 2) shift i extract 8 = 0 then begin ws:= i-8; i:=8; end; <*check array grænser*> low1:=system(3,high_desc,descriptor); low2:=system(3,high_res,result); if low1<>1 or low2<>1 then begin for i:=low1 step 1 until high_desc do descriptor(i):= 0; if low1<=1 then descriptor(1):=-1; goto grænsefejl; end; for i:=1 step 1 until high_desc do descriptor(i):= 0; item:=0; next; <*hent item nr 1*> if sepleng=0 then begin fp_param:=false; goto ud; end; if sep=6 & leng=10 then next; if sepleng=0 then begin fp_param:=false; goto ud; end; <*check om dette er 'current input' eller 1. param*> next; if sepleng=0 then begin fp_param:=false; goto ud; end; if sep=8 then begin item:=item-2; next; end; <*vi har nu 1. parameter i hånden*> next_param: found:= if oneword then paramname(1) shift ws = ar(1) shift ws else paramname(1)=ar(1) & paramname(2) shift ws = ar(2) shift ws; if -, found then begin next; for i:=1 while sep=8 do next; if sepleng=0 then begin fp_param:=false; goto ud; end else goto next_param; end; <*den rigtige parameter er fundet*> desc_i:=2; res_i:=1; descriptor(1):=0; next; for i:=1 while sep=8 do begin descriptor(1):=descriptor(1)+1; if desc_i>high_desc then begin descriptor(1):=-1; goto grænsefejl; end; descriptor(desc_i):= if leng=4 then 1 else if ar(1)=real<:yes:> or ar(1)=real<:no:> then 3 else 2; case descriptor(desc_i) of begin <*tal*> begin if res_i>high_res then begin descriptor(1):=-1; goto grænsefejl; end; result(res_i):=ar(1); res_i:=res_i+1; end; <*navn*> begin if res_i+1>high_res then begin descriptor(1):=-1; goto grænsefejl; end; result(res_i):=ar(1); result(res_i+1):=ar(2); res_i:=res_i+2; end; <*boolean*> begin if res_i>high_res then begin descriptor(1):=-1; goto grænsefejl; end; result(res_i):= 0.0 shift 48 add (if ar(1)=real<:yes:> then 1 else 0); res_i:=res_i+1; end; end case; desc_i:=desc_i+1; next; end; grænsefejl: fp_param:= true; ud: end; end. end finis ▶EOF◀