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); }