|
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: »tmacro«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦162d2eb5b⟧ »talgprog« └─⟦this⟧ └─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦this⟧ »tmacro«
macro=set 40 global macro macro=algol connect.no 80-07-30 Anders Lindgård begin integer i,j,p,res,c,char,fp,items,exm; boolean missing,repl; array FP,IN,OUT(1:3),d(1:2,1:9); boolean array des(1:9); procedure replace(NEW); array NEW; begin integer res,h8,pda,address,h8address,disp; array field in,nn; integer array fpc(1:1); disp:=26; h8:=92; h8address:=wordload(wordload(66)+22)+h8; if false then write(out,"nl",1,<:h8 :>,h8address,wordload(h8address)); address:=wordload(h8address); for i:=byteload(address) while i>=4 do address:=address+byteload(address+1); if false then write(out,"nl",1,<:last command address :>,address); redefarray(fpc,address-disp,disp//2); for i:=disp//2 step -1 until 1 do fpc(i):=0; in:=4; nn:=14; fpc(1):=2 shift 12+2; fpc(2):=2 shift 12+10; movestring(fpc.in,1,<:i:>); fpc(7):=4 shift 12+10; for i:=1,2 do fpc.nn(i):=NEW(i); fpc(12):=2 shift 12+2; fpc(13):=-4 shift 12; res:=lookupentry(NEW); i:=1; if res<>0 then write(out,"nl",1,"*",3,<:lookup :>, string fpc.nn(increase(i)),res,"nl",1); wordstore(h8address,address-disp); fpproc(7,0,0,0); end replace; missing:=false; exm:='!'; items:=0; for i:=1 step 1 until 9 do des(i):=false; if readparam(IN)<0 then fp:=readparam(IN); fp:=readparam(IN); if fp=2 then begin for fp:=readparam(FP) while fp<>0 and items<9 and fp<>2 do begin if fp<3 then alarm("nl",1,"*",3,<:parameter error :>,fp); items:=items+1; if fp=3 then begin des(items):=true; d(1,items):=FP(1); end else for i:=1,2 do d(i,items):=FP(i); end for fp; if false then write(out,"nl",1,<:items:>,items); res:=connectcuri(IN); i:=1; if res<>0 then alarm("nl",1,"*",3,<:connect input :>, string(IN(increase(i)))); connectlso; if -,readlsfp(OUT) then begin generaten(OUT); reservesegm(OUT,1); connectcuro(OUT); end; for c:=readchar(in,char) while char<>25 do begin if char<>exm then outchar(out,char) else begin repeat readchar(in,p); if p=exm then outchar(out,exm); until p<>exm; p:=p-48; missing:=p>0 and p>items and p<10; if p>0 and p<=items then begin i:=1; if des(p) then write(out,<<d>,round d(1,p)) else write(out,string d(increase(i),p)); end p legal else write(out,false add char,1,false add (p+48),1); end !; end char; closeout; if missing then write(out,"nl",1,"*",2,<:parameters missing:>) else begin i:=1; if false then write(out,"nl",1,<:name :>,string OUT(increase(i))); readbfp(<:replace:>,repl,true); if repl then replace(OUT); end; end fp=2; end; m=assign macro global m lookup m macro ▶EOF◀