Well, here is what I have:

Assembler program (hand written):

LA    R1,parmlist
L     R15,=V(INTERF#C)
BALR  R14,R15

parmlist DS 0FD
         DC AD(inputBufferPtr)
         DC AD(ouputBufferPtr)
         DC AD(inputBufferLength)
         DC AD(inputBufferLength)

C Program:
#pragma prolog(interfd,"ZPROLOG")
#pragma epilog(interfd,"ZEPILOG")
typedef struct
{
   void       *inputBufferPtr;
   void       *ouputBufferPtr;
   int        inputBufferLength;
   int        outputBufferLength;
   int        level;
   int        feof;
   int        entry;
} mtl_parm_t;

int interfd(mtl_parm_t *plist)
{

    if (plist ->entry == 1)
....

I have provided prolog code:

LARL  R15,@@LIT@2
Using @@LIT@2,R15
STMG  R14,R12,8(R13)
LGR   R9,R1     Save R1
LGR   R2,R0
LGHI  R0,312
LA    R1,1
SLL   R1,20
AGR   R0,R1
Storage Obtain
LGR   R15,R1
STG   R15,136(,R13)           Addr of Next Savearea
STG   R13,128(,R15)           Addr of Previous Savearea
LGR   R13,R15                 Point R13 to this DSA
LGR   R0,R2                   WSA address - Amode 64
LGR   R1,R9    Restore R1

Maybe I am way off base.

Reply via email to