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

⟦6de5fea8b⟧ TextFile

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

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »editp2« 

TextFile

tnpascp2=set 280 disc3
scope day tnpascp2
tnpascp2=edit tpascpass2

l./version/,r/pass2/pass2 hcø/,
r/06.17/12.11/,
l./defaultcode=1500/,r/15/5/,
l./maxnest=20/,r/20/25/,
l./last_std/,i/
fs_description,
fs_firstaddress,fs_initproc,fs_reserveproc,ps_releaseproc,fs_include,
fs_exclude,fs_sendmessage,fs_waitanswer,fs_waitmessage,ps_sendanswer,
fs_waitevent,ps_getevent,fs_testevent,
fs_wordload,ps_wordstore,
fs_createint,fs_startint,fs_stopint,fs_modifyint,fs_removeproc,
ps_regret,ps_fpproc,fs_connectcurri,ps_unstackcurri,ps_moncall,
ps_monitormode,fs_cpumask,fs_systemaddress,fs_sendfurther,
fs_systime,
fs_inor,fs_inand,fs_inexor,fs_shift,fs_extract,
fs_renameentry,
ps_allocate,
/,
l./stdroutine=(/,l./binaryget/,l-1,
r/,0)/,
32768,0,32770,32772,32774,32776,
32778,32780,32782,32784,32786,
32788,32790,32792,0,0,
32794,32796,32798,32800,32802,
32804,32806,32808,32810,32812,
32814,32816,32818,32820,32822,
0,0,0,0,0,
32824,
newoffset,
0)/,
l./procedureinitialize/,
l./ifcompilertest/,r/compilertest/true/,
l./procedurestandardproc/,
l./filparam:/,r/:/,nextparam,param1,param2,param3,param4:/,
l./:integer/,r/:/,storeindex:/,
l./procedureread/,i/
/,
l./ps_new:/,i/
ps_allocate,
/,
l./iflength<maxsignedhalfword/,
i/
if standardname=ps_allocate then
begin
 param1:=param^.next^.leftoperand;
 if param^.kind<>reg then load(param1);
 loadregister(0,param1);
 returnpseudo(param1);
end  (* allocate *) else
/,
l./ps_replace,/,l-1,i/
ps_monitormode,
ps_unstackcuri:
begin
 callstandard;
 makewordcode(routinenumber);
end;
ps_wordstore:
begin
 nextparam:=param^.next^.leftoperand;
 param1:=nextparam^.rightoperand;
 if param^.kind=expression then evaltoresult(param,noskip);
 if param^.kind<>reg then load(param);
 if param1^.kind<>expression then evaltoresult(param1,noskip);
 if param1^.kind<>reg then loadregister(0,param1);
 loadregister(1,param);
 makeindexcode(rs,0,1,0);
 returnpseudo(param1);
end;
ps_sendanswer,
ps_moncall,
ps_fpproc:
begin
 if param^.kind=expression then evaltoresult(param,noskip);
 if param^.kind<>reg then load(param);
 nextparam:=param^.next^.leftoperand;
 param1:=nextparam^.rightoperand;
 if param1^.kind=expression then evaltoresult(param1,noskip);
 if param1^.kind<>reg then load(param1);
 param2:=nextparam^.leftoperand;
 if param2^.kind=expression then evaltoresult(param2,noskip);
 if param2^.kind<>reg then load(param2);
 returnpseudo(nextparam);
 nextparam:=param2^.leftoperand;
 param3:=param2^.rightoperand;
 returnpseudo(nextparam);
 if param3^.kind=expression then evaltoresult(param3,noskip);
 if param3^.kind<>reg then load(param3);
 reservecode(50);
 makewrelcode(rs,param^.regno,0);
 makewrelcode(rs,param2^.regno,0);
 if standardname=ps_moncall then
 begin
  param4:=param3^.rightoperand;
  nextparam:=param3^.leftoperand;
  returnpseudo(nextparam);
  if param4^.kind=expression then evaltoresult(param4,noskip);
  if param4^.kind<>reg then load(param4);
  makewrelcode(rs,param4^.regno,0);
  returnpseudo(param4);
end;
storeindex:=lastindex;
loadaddress(0,param1);
loadaddress(1,param3);
callstandard;
makewordcode(routinenumber);
makewordcode(0);
makewordcode(2);
if standardname=ps_moncall then makewordcode(4);
if lastindex-storeindex>=maxsignedhalfword div oneword then error(319)
else code^.cÆstoreindexÅ.displacement:=(lastindex-storeindex)*oneword;
returnpseudo(param1);
returnpseudo(param2);
returnpseudo(param3);
end;
ps_releaseproc,
ps_getevent,
ps_regret,
/,
l./procedurestandardfunction/,
l./fs_system/,i/
fs_firstaddress: begin
  loadaddress(0,param);
  makeregister(funct,0);
end;
fs_wordload: begin
  if param^.kind<>reg then load(param);
  loadregister(1,param);
  makeindexcode(rl,1,1,0);
  makeregister(funct,1);
end;
fs_inor,
fs_inand,
fs_inexor,
fs_shift,
fs_extract: begin
if param^.kind<>reg then load(param);
nextparam:=funct^.leftoperand^.leftoperand;
param1:=nextparam^.rightoperand;
if param1^.kind=expression then evaltoresult(param1,noskip);
if param1^.kind<>reg then load(param1);
loadregister(0,param);
loadregister(1,param1);
case std_func of
fs_inor: makecode(lo,0,2);
fs_inand: makecode(la,0,2);
fs_inexor: makecode(lx,0,2);
fs_shift: makeindexcode(ls,0,1,0);
fs_extract: begin
 makecode(al,3,-1);makeindexcode(ls,3,1,0);
 makecode(la,0,6);
end;
end;
makeregister(funct,0);
returnpseudo(param1);
end;
fs_renameentry,
fs_include,
fs_exclude,
fs_systemaddress,
fs_sendfurther,
fs_stopint:
begin
  if param^.kind<>reg then load(param);
  param^.typ:=integertype;
  nextparam:=funct^.leftoperand^.leftoperand;
  param1:=nextparam^.rightoperand;
  if param1^.kind=expression then evaltoresult(param1,noskip);
  if param1^.kind<>reg then load(param1);
  param1^.typ:=integertype;
  loadaddress(1,param1);
  loadaddress(0,param);
  callstandard;
  makewordcode(stdroutineÆstd_funcÅ);
  makeregister(funct,0);
  returnpseudo(param1);
  returnpseudo(nextparam);
end;
fs_description,
fs_initproc,
fs_reserveproc,
fs_waitevent,
fs_cpumask,
fs_connectcuri,
fs_removeproc,
fs_startint: begin
  if param^.kind<>reg then load(param);
  param^.typ:=integertype;
  loadaddress(0,param);
  callstandard;
makewordcode(stdroutineÆstd_funcÅ);
  makeregister(funct,0);
end;
fs_createint,
fs_modifyint,
fs_waitanswer,
fs_testevent: begin
  if param^.kind<>reg then load(param);
  param^.typ:=integertype;
  nextparam:=funct^.leftoperand^.leftoperand;
  param1:=nextparam^.rightoperand;
  loadaddress(1,param1);
  loadaddress(0,param);
  callstandard;
  makewordcode(stdroutineÆstd_funcÅ);
  makeregister(funct,0);
  returnpseudo(param1);
  returnpseudo(nextparam);
  end;
fs_systime,
fs_sendmessage,
/,
l./fs_monitor:/,
l./callstandard/,
l./makeregister/,i/
if std_func=fs_systime then
begin
  makeregister(funct,0);
  registerÆ1Å:=registerÆ0Å;
end else
/,f
cpass2=edit compass2
i/
o u80
/,
l./tpascpass2/,r/tp/tnp/,
r/pass2 /p2 /,
l b.i/
o c
/,f
scope day cpass2 tnpascp2
mode list.no
finisb
▶EOF◀