|
|
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: 2304 (0x900)
Types: TextFile
Names: »pinit«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦9929d5d85⟧ »cpsys«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦9929d5d85⟧ »cpsys«
└─⟦this⟧
clear pinitrun
pinitrun=set 27
(pinitrun=algol
message program in pinitrun)
begin
zone z(128,1,stderror);
integer i, j, line, ba, sh;
real array NAME(1:1), T(1:12);
integer array A(0:127);
procedure error(str);
string str;
begin
write(out,<:<10>:>,str);
setposition(out,0,0);
goto REP;
end error;
open(z,4,<:pinitarea:>,0);
for i:=0 step 1 until 127 do A(i):=i;
for i:= 32, 48 step 1 until 57, 65 step 1 until 93,
97 step 1 until 125 do A(i):=6 shift 12 add i;
A(10):=8 shift 12 add 10;
swoprec(z,128);
REP:
readstring(in,NAME,1);
if NAME(1)=real (<:init:>) then
begin
for i:=1 step 1 until 128 do z(i):=0.0 shift 48;
end
else
if NAME(1)=real(<:list:>) then
begin
for i:=1 step 1 until 10 do
begin
j:=(i-1)*12+1;
if z(j)<>0.0 shift 48 then write(out,<:<10>:>,<<ddd>,i,
false add 32,3,string(z(increase(j))));
end;
write(out,false add 10,1);
setposition(out,0,0);
end
else
if NAME(1)=real(<:clear:>) then
begin
read(in,line);
if line<0 or line>10 then error(<:lineno too great:>);
for j:=(line-1)*12+1 step 1 until line*12 do z(j):=0.0 shift 48;
end
else
if NAME(1)=real(<:set:>) then
begin
read(in,line);
if line<0 or line>10 then error(<:lineno too great:>);
intable(A);
i:=readstring(in,T,1);
intable(0);
if i<0 then error(<:too long line:>);
for sh:=-40 step 8 until 0 do
if T(i) shift sh extract 8 = 0 then
begin
T(i):=T(i) shift (sh-8) shift 8 add 10 shift (-sh);
if i=12 and sh=0 then error(<:too long line:>);
for i:=i+1 while i<=12 do T(i):=0.0 shift 48;
goto OUTR;
end;
OUTR:
i:=1;
write(out,string(T(increase(i))));
setposition(out,0,0);
i:=(line-1)*12;
for j:=1 step 1 until 12 do z(i+j):=T(j);
end
else
if NAME(1)=real<:stop:> then
goto ENDP;
goto REP;
ENDP:
close(z,true);
end
pinitrun c
clear pinitrun
end
▶EOF◀