|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3367 (0xd27)
Types: TextFile
Names: »P486EOPR.PAS«
└─⟦037c0ce35⟧ Bits:30010524 DVBS1.SW2114.src.2.6-2 RTP compiler source SW2104+SW2114 Disk#2 30/1-92 HHA
└─⟦this⟧ »RTP\P486EOPR.PAS«
└─⟦828f0d3dd⟧ Bits:30010527 DVBS1.SW2114.src.2.6-5 RTP Compiler Source SW2104+SW2114 Disk 2 92.02.03 HEJ HHA
└─⟦this⟧ »RTP\P486EOPR.PAS«
└─⟦891417be1⟧ Bits:30010519 DVBS1.SW2114.src.2-1 SW2114 1/4 Real Time Pascal 2.7 92.06.16
└─⟦this⟧ »RTP\P486EOPR.PAS«
└─⟦a2bcc95d7⟧ Bits:30010511 DVBS1.SW2114.src.2.14-2 SW2114 REAL #2/4 TIME PASCAL SOURCE REL 2.14 92.09.01
└─⟦this⟧ »RTP\P486EOPR.PAS«
\r
\r
PROCEDURE PushAddr(PtrSt : St_ElemPtr);\r
(* The procedure push the address given by the STH_node PtrSt\r
onto the evalstack *)\r
VAR Par : ParType;\r
AddrType : Address_Type;\r
TypeAddr : boolean;\r
Spix : SpixRange;\r
funclev : integer;\r
\r
BEGIN\r
TypeAddr := false;\r
Par := P_Normal;\r
WITH PtrST^ DO\r
BEGIN\r
Spix := PtrST^.ST_Spix;\r
IF St_Kind = CType THEN\r
BEGIN\r
AddrType := Type_Address;\r
TypeAddr := true;\r
END\r
ELSE\r
IF St_Kind = CRecField THEN\r
BEGIN\r
AddrType := Field_Addr;\r
TypeAddr := true;\r
END\r
ELSE\r
IF (St_Kind = CSubrange) or (ST_Kind = CsetType) THEN\r
BEGIN\r
AddrType := Subr_Addr;\r
TypeAddr := true;\r
Spix := AnonymousSpix;\r
END\r
ELSE\r
IF St_Kind = CArrayType THEN\r
BEGIN\r
AddrType := Array_Addr;\r
TypeAddr := true;\r
Spix := AnonymousSpix;\r
END\r
ELSE\r
IF St_Kind = CRecordType THEN\r
BEGIN\r
AddrType := Record_Addr;\r
TypeAddr := true;\r
Spix := AnonymousSpix;\r
END;\r
\r
\r
\r
IF TypeAddr THEN\r
BEGIN\r
WITH AddrType DO\r
BEGIN\r
IF AddrType_Mode = direct THEN\r
ESTPushAddr(Spix,IntegerType,False,Par,level,Offset)\r
ELSE\r
IF AddrType_Mode = indirect THEN\r
ESTPushIndAddr(Spix,IntegerType,false,Par,Level,\r
Offset,dopeoffset)\r
ELSE\r
ESTPushCAddr(Spix,IntegerType,false,par,addr_label,\r
dopeoffset);\r
END;\r
END\r
ELSE\r
\r
IF ST_Kind = CFunction THEN\r
BEGIN\r
(* a Function *)\r
funclev := St_Level;\r
if (st_size>4) or (dynamictype in spec_struct)\r
then estpushindaddr(spix,typeref,false,par,funclev,func_result_offset,0)\r
else ESTPushAddr(Spix,TypeRef,false,Par,funclev,Func_Result_Offset );\r
END\r
ELSE\r
IF ST_Kind = CProgram THEN\r
(* a Program *)\r
ESTPushAddr(Spix,St_NillAddr,false,Par,0,Prog_descr_Offset)\r
ELSE\r
BEGIN\r
(* a variabel or a parameter *)\r
IF (( ST_Kind = cSharedParam) OR\r
( ST_Kind = cShared )) THEN Par := P_Share;\r
\r
\r
IF Var_Indir = false THEN\r
ESTPushAddr(Spix,TypeRef,false,Par,Var_Level,\r
Var_Offset)\r
ELSE\r
ESTPushIndAddr(Spix,TypeRef,false,Par,Var_Level,\r
Var_Offset,0);\r
END;\r
END;\r
\r
\r
END;\r
\r
\r
«eof»