#include
#include
int onNetwork(void);
CLIPPER b_fcb()
{
union REGS iRegs, oRegs;
struct SREGS segregs;
char *source = _parc(1);
char *target = _parc(2);
long *bytes = (long *)_parnl(3);
if( !ISCHAR(1) && !ISCHAR(2) && !ISNUM(3) ){
_retl(0);
return;
}
if( !onNetwork() ){
_retl(0);
return;
}
iRegs.h.ah = 0xe6;
iRegs.x.cx = FP_SEG( (void far *)bytes );
iRegs.x.dx = FP_OFF( (void far *)bytes );
segregs.ds = FP_SEG( (void far *)source );
iRegs.x.si = FP_OFF( (void far *)source );
segregs.es = FP_SEG( (void far *)target );
iRegs.x.di = FP_OFF( (void far *)target );
int86x(0x2F,&iRegs,&oRegs,&segregs);
_retl( oRegs.h.al ? 0 : 1 );
}
int onNetwork(void)
{
union REGS regs;
regs.h.ah = 0xdc;
int86(0x21,®s,®s);
return(regs.h.al);
}