|
|
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: 3072 (0xc00)
Types: TextFile
Names: »readtapetx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »readtapetx «
mode list.yes
readtape=algol survey.yes
begin
integer i, j, shares, segm, blocks, res, hwds;
integer array ia (1:20);
integer field mode, file, block, int;
integer array field name;
procedure bl (z, s, b);
zone z ;
integer s, b ;
begin
integer file, block, i;
integer array ia (1:20);
if s extract 1 = 1 then stderror (z, s, b);
if b = 0 then
begin
getzone6 (z, ia);
getshare (z, ia, ia (17));
if ia (4) shift (-12) extract 1 <> 0 then
begin
getposition (z, file, block);
system (14, i, ia);
write (out, "nl", 1, <:*** b = 0 !!! file = :>,
file, <:, block = :>, block,
"nl", 1, "sp", 13, <:answ.file = :>, ia (4),
<: , answ.block = :>, ia (5));
end;
end;
end procedure bl;
mode := 2;
name := 2;
file := 14;
block := 16;
int := 2;
read (in, shares, segm, blocks);
write (out, "nl", 1,
"nl", 1, <:shares = :>, shares,
"sp", 4, <:segm = :>, segm ,
"sp", 4, <:blocks = :>, blocks);
stopzone (out, false);
begin
zone array z (2, buflengthio (2, shares, segm * 512), shares, bl);
open (z (1), 0, <:t:>, 0);
close (z (1), true);
res := monitor (42, z (1), i, ia);
if res <> 0 then
system (9, res, <:<10>lookup t:>);
<* write (out, << ddd>,
"nl", 1, <:t = :>, ia.mode shift (-12) extract 11, ia.mode extract 12,
ia.name, ia.file, ia.block);
*>
open (z (1), ia.mode, ia.name, 2);
open (z (2), 0 , <:0pi:>, 0);
setposition (z (1), ia.file, ia.block);
check (z (1));
openinout (z, 1);
expellinout (z, 2);
for i := 1 step 1 until blocks do
begin
hwds :=
inoutrec (z, 0);
inoutrec (z, hwds);
if hwds > 2 then
begin
if hwds <> segm * 512 then
write (out, "nl", 1, <:bloklængdefejl : block no : :>, i,
<: , block field : :>, z (1).int, <: , bloklængde : :>, hwds);
if i <> z (1).int then
write (out, "nl", 1, <:bloknummerfejl : block no : :>, i,
<: , block field : :>, z (1).int);
if i mod 10 = 0 then
begin
stopzone (z (1), false);
getposition (z (1), file, block);
if i <> block then
write (out, "nl", 1, <:bloknummerfejl : block no : :>, i,
<: , block count : :>, block);
i := i + shares - 1;
closeinout (z);
setposition (z (1), file, i + shares - 1);
check (z (1));
getposition (z (1), file, i);
openinout (z, 1);
expellinout (z, 2);
end;
end else
begin
write (out, "nl", 1, <:tape mark , block no : :>, i);
i := blocks;
end;
end;
closeinout (z);
close (z (1), true);
close (z (2), true);
end;
end;
▶EOF◀