DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦ccf87ad9f⟧ TextFile

    Length: 6144 (0x1800)
    Types: TextFile
    Names: »typeprtxt«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »typeprtxt« 

TextFile

mode list.yes
typeprint=set 42
scope user typeprint
typeprint=algol

begin <* S.E.Harnung.  21 11 80. 
Current version: 27 11 81.
Call parameters:
<area>                                (4.10; run.no)
<area>(.<area>) 1-n                   (4.10,8.10; run.yes)
<area> <firstpage>.<lastpage>         (4.10,4.4,8.4; run.no)
<area> <firstpage>.<lastpage>.run     (4.10,4.4,8.4,8.10)
<area> test.<fount>                   (4.10,8.4)        *>

integer chno,segm,lastsegm,i,page,firstpage,lastpage,
j,res,class,char,ch,ch1,cu,file,key;
boolean stop,nextfile,test;
integer array c(1:768),intab(0:150),ia(1:12),tail(1:10);
real array ra(1:2);
zone term(10,1,stderror);

procedure insegm;
begin integer i,j; integer field fi;
 if segm<=lastsegm then inrec6(in,512) else error(7);
 i:=j:=fi:=0;
 for i:=if i=3 then 1 else i+1 while j<768 do
 begin j:=j+1;
  fi:=fi+(if i=1 then 2 else 0);
  c(j):=in.fi shift (case i of (-16,-8,0)) extract 8
 end
end insegm;

integer procedure inchar(t); integer t;
begin COUNT: chno:=chno+1;
 if chno=769 then
 begin segm:=segm+1; insegm; chno:=0; goto COUNT
 end;
 t:=c(chno); inchar:=intab(t)
end inchar;

procedure error(x); value x; integer x;
begin
 i:=1;
 write(out,<:<13><10>***typeprint  :>,case x of (
 <:call:>,<:param:>,<::>,
 <:parent :>,<:connect :>,
 <:logical error:  :>,<:segment error:  :>));
 if x<4 then goto EXIT;
 write(out,string ra(increase(i)));
 if x=4 then
 begin
  write(out,<: not allowed.:>); goto EXIT
 end;
 write(out,if x<>5 then <:, segment:> else <::>,
 if x=5 then res else segm-1);
 goto OUT
end error;

for i:=1 step 1 until 29 do intab(i):=4;
intab(27):=1; for i:=9,11,30,31 do intab(i):=2;
for i:=17,18,19,20 do intab(i):=3;
intab(10):=5; intab(8):=6;
for i:=33 step 1 until 126 do intab(i):=8;
for i:=48 step 1 until 57,65,66,68,85 do intab(i):=7;
for i:=128 step 1 until 149 do intab(i):=9;
intab(139):=10; intab(150):=11; intab(0):=intab(127):=12;
intab(32):=13;

file:=firstpage:=1; lastpage:=10000;
nextfile:=false; stop:=true;

if system(4,1,ra)<>4 shift 12+10 then error(1);
test:=ra(1)=real<:test:>; if test then goto SETTW;
i:=system(4,2,ra);
if i=4 shift 12+4 then
begin
 firstpage:=ra(1);
 if system(4,3,ra)<>8 shift 12+4 then error(1);
 lastpage:=ra(1);
 if firstpage<1 or firstpage>lastpage then error(2);
 if system(4,4,ra)=8 shift 12+10 then
 stop:=-,(ra(1)=real<:run:>)
end else
if i=8 shift 12+10 then nextfile:=true;

SETTW: outendcur(0); <* initialize out *>
getshare6(out,ia,1); ia(4):=5 shift 12 add 2; setshare6(out,ia,1);
<*CR not LF*>

if test then
begin
 write(out,<:<27><30><17><27><31><13><12><13><10><13><10><13><10>:>);
 for i:=3 step 1 until 9 do
 write(out,<: :>,false add (48+i),1,<:0<13><10>:>);
 write(out,<:100<13><10>110<13><10>120<13>:>,
 <:<27><11><3><27><31><25>  :>);
 for i:=0 step 1 until 9 do write(out,<: :>,false add (48+i),1);
 write(out,<:<8><10><27><54>:>); <* BS LF ESC 6 *>
 for i:=39 step -1 until 33 do write(out,false add i,1,<: :>);
 write(out,false add 32,5);
 for i:=4 step 1 until 11 do
 begin
  write(out,<:<8><10><27>:>,
  false add (if i mod 2=0 then 53 else 54),1);
  for j:=0 step 1 until 9 do
  write(out,false add (10*i+(if i mod 2=0 then j else 9-j)),1,
  if j<>9 then <: :> else <::>)
 end;
 write(out,<:<10><13>   <120> <121> <122> <123> <124> <125>:>,
 <: <126><13><10><13><10><27><31><13><27><30><9><25>:>);
 goto EXIT
end test;

nameload(parent+3,ra);
<*if ra(1)<>real<:p:> then error(4)*>;
open(term,2 shift 12 add 8,ra,0); <*LF not CR*>
<*stackcuri;*> system(4,1,ra);

NEXTFILE: res:=connectcuri(ra);
if res<>0 then error(5); setposition(in,0,0); i:=1;
if reserveproc(ra,key)<>0 then
write(out,<:*** :>,string ra(increase(i)),<: not reserved<13><10>:>);
page:=chno:=0; lookuptail(ra,tail); lastsegm:=tail(1);

for segm:=1 step 1 until lastsegm do
begin insegm;
 for chno:=chno+1 while chno<769 do if c(chno)=139 then
 begin page:=page+1; if page>=firstpage then goto PRINT
 end;
 chno:=0
end; error(7);

PRINT: write(out,<:typeprinting begin.<13><12>:>);
ch:=19; cu:=2;
PRSTART: setposition(out,0,0);
for i:=readchar(term,char) while char<>10 and char<>64 do;
if char=64 then goto OUT;
write(out,<:<27><10>:>); cu:=cu+2;

INCHAR: for ch:=ch+1 while true do
begin class:=inchar(char);
 case class of
 begin
  <*1*> begin <*control unit*>
         i:=inchar(ch1); ch:=ch-1; cu:=cu+2;
         write(out,<:<27>:>,false add ch1,1);
         if i=2 then
         begin inchar(ch1); outchar(out,ch1); cu:=cu+1
         end else
         if i<>5 and i<>7 then error(6)
        end;
  <*2*> error(6); <*HT,VT,RS,US*>
  <*3*> begin <*DC1,DC2,DC3,DC4*>
         ch:=ch-1;
         if stop then
         begin
          setposition(out,0,0);
          for i:=readchar(term,char) while char<>25 do
         end
        end;
  <*4*> error(6); <*control chars, not used*>
  <*5*> begin <*LF*>
         write(out,<:<13><10>:>); ch:=ch-1; cu:=cu+2
        end;
  <*6*> begin <*BS*>
         ch:=ch-1; cu:=cu+1; outchar(out,8)
        end;
  <*7*> outchar(out,char); <*digits,A,B,D,U*>
  <*8*> outchar(out,char); <*visible chars*>
  <*9*> error(6); <*128-138,141-149 not used*>
 <*10*> begin <*139,FF*>
         page:=page+1; ch:=ch-1; cu:=cu+1;
         write(out,<:<13><12>:>);
         if page>lastpage then goto CONTINUE;
         if stop then goto PRSTART
        end;
 <*11*> goto CONTINUE; <*150,EM*>
 <*12*> ; <*0,127 blind*>
 <*13*> begin <*SP*>
         ch:=ch-1; cu:=cu+1; outchar(out,32)
        end;
 end class
end ch;

CONTINUE: releaseproc(ra);
if nextfile then
begin file:=file+1;
 if system(4,file,ra)=8 shift 12+10 then goto NEXTFILE
end;

if stop then
begin setposition(out,0,0);
 for i:=readchar(term,char) while char<>10 and char<>64 do;
end;
write(out,<:<27><30><9><27><31><13><13>
visible characters::>,<<ddddddd>,ch,
<:<13><10>control characters::>,cu,<:<10>:>);
OUT: close(term,true); unstackcuri;
write(out,<:<10><13>typeprinting end.<10>:>);
EXIT: setposition(out,0,0);
getshare6(out,ia,1); ia(4):=5 shift 12; setshare6(out,ia,1);
outchar(out,10); fpproc(7,0,0,0)
end
▶EOF◀