DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

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

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦2c033d4da⟧ TextFile

    Length: 3367 (0xd27)
    Types: TextFile
    Names: »P486EOPR.PAS«

Derivation

└─⟦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« 

TextFile

\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»