
int     IpxOpenSocket(unsigned int socket)      {
        _DX = socket;
        _BX = 0x0000;
        _AL = 0xFF;
        geninterrupt(0x7a);
        _AH = 0;
        return _AX;     }

void    IpxCloseSocket(unsigned int socket)   {
        _BX = 0x0001;
        _DX = socket;
        geninterrupt(0x7a);   }

void    LetIpxBreathe(void)        {
        _BX = 0x000A;
        geninterrupt(0x7a);    }

void    IpxListen(void)     {
        memset(&ReceiveECB, 0, sizeof(ECB));
        memset(&ReceiveHeader, 0, sizeof(IPXHEADER));
        ReceiveECB.socket_number     = 0x2424;
        ReceiveECB.packet_count      = 2;
        ReceiveECB.packet[0].address = (void far *) &ReceiveHeader;
        ReceiveECB.packet[0].length  = sizeof(IPXHEADER);
        ReceiveECB.packet[1].address = (void far *) &ReceiveMessage;
        ReceiveECB.packet[1].length  = sizeof(ReceiveMessage));

        _ES = FP_SEG( (void far *) &ReceiveECB);
        _SI = FP_OFF( (void far *) &ReceiveECB);
        _BX = 0x0004;
        geninterrupt(0x7a);     }

void    IpxSend(void)      {
        memset(&SendECB, 0, sizeof(ECB));
        memset(&SendHeader, 0, sizeof(IPXHEADER));
        SendECB.socket_number     = 0x2323;
        SendECB.packet_count      = 2;
        SendECB.packet[0].address = (void far *) &SendHeader;
        SendECB.packet[0].length  = sizeof(IPXHEADER);
        SendECB.packet[1].address = (void far *) &MessageToSend;
        SendECB.packet[1].length  = sizeof(MessageToSend);
        SendHeader.packet_type    = 4;
        memcpy(SendHeader.dest_network_number, network, 4);
        memcpy(SendHeader.dest_network_node,   node,    6);
        SendHeader.dest_network_socket = 0x2424;

        _ES = FP_SEG( (void far *) &SendECB);
        _SI = FP_OFF( (void far *) &SendECB);
        _BX = 0x0003;
        geninterrupt(0x7a);     }
