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.