- #ifdef __MSDOS__ // Pierre-Marie Baty -- compile guard 
-   
- #include "pd/net.h" 
-   
- #include "errors.h" 
- #include "globvrpb.h" 
- #include "harness/hooks.h" 
- #include "harness/trace.h" 
- #include "network.h" 
- #include <ctype.h> 
- #include <stdlib.h> 
- #include <string.h> 
-   
- #ifdef __DOS__ 
-   
- tU32 gNetwork_init_flags; 
- tPD_net_game_info* gJoinable_games; 
- int gMatts_PC; 
- tU16 gSocket_number_pd_format; 
- _IPX_ELEMENT gListen_elements[16]; 
- char gLocal_ipx_addr_string[32]; 
- _IPX_ELEMENT gSend_elements[16]; 
- _IPX_LOCAL_TARGET gLocal_addr_ipx; 
- char gReceive_buffer[512]; 
- tPD_net_player_info gRemote_net_player_info; 
- _IPX_LOCAL_TARGET gBroadcast_addr_ipx; 
- tPD_net_player_info gLocal_net_player_info; 
- char gSend_buffer[512]; 
- tIPX_netnum gNetworks[16]; 
- _IPX_LOCAL_TARGET gRemote_addr_ipx; 
- tU8* gSend_packet; 
- W32 gListen_segment; 
- tU8* gSend_packet_ptr; 
- W32 gSend_segment; 
- tU8* gListen_packet; 
- tU8* gListen_packet_ptr; 
-   
- size_t gMsg_header_strlen; 
- int gNumber_of_networks; 
- int gNumber_of_hosts; 
-   
- tRM_info RMI; 
- _IPX_HEADER gLast_received_IPX_header; 
- tU16 gSocket_number_network_order; 
- unsigned short gECB_offset; 
- tU16 gListen_selector; 
- tU16 gSend_selector; 
-   
- /*static*/ void ClearupPDNetworkStuff(void); 
- /*static*/ void MATTMessageCheck(char* pFunction_name, tNet_message* pMessage, int pAlleged_size); 
- /*static*/ int GetProfileText(char* pDest, int pDest_len, char* pFname, char* pKeyname); 
- /*static*/ int GetSocketNumberFromProfileFile(void); 
- /*static*/ tU32 EthernetAddressToU32(_IPX_LOCAL_TARGET* pAddr_ipx); 
- /*static*/ void NetNowIPXLocalTarget2String(char* pString, _IPX_LOCAL_TARGET* pSock_addr_ipx); 
- /*static*/ int GetMessageTypeFromMessage(char* pMessage_str); 
- /*static*/ int SameEthernetAddress(_IPX_LOCAL_TARGET* pAddr_ipx1, _IPX_LOCAL_TARGET* pAddr_ipx2); 
- /*static*/ _IPX_LOCAL_TARGET* GetIPXAddrFromPlayerID(tPlayer_ID pPlayer_id); 
- /*static*/ void MakeMessageToSend(int pMessage_type); 
- /*static*/ int ReceiveHostResponses(void); 
- /*static*/ int BroadcastMessage(void); 
- /*static*/ int hmiIPXCloseSocket(W32 wSocket); 
- /*static*/ void hmiIPXListenForPacket(_IPX_ECB* pECB_ptr, tU32 pOffset); 
- /*static*/ int hmiIPXPostListen(_IPX_ECB* pECB_ptr, tU32 pOffset); 
- /*static*/ int hmiIPXGetData(char* pData, tU32 wDSize); 
- /*static*/ void hmiIPXSendPacket(_IPX_ECB* sECB, _IPX_ECB** pPacket, char* pHeader, W32 wSize); 
- /*static*/ int hmiIPXSendDataDirect(char* pHeader, W32 wHSize, char* pData, W32 wDSize, _NETNOW_NODE_ADDR* sNode); 
- /*static*/ void hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR* sInterworkAddr); 
- /*static*/ void hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET* sNetworkAddr); 
- /*static*/ int AllocateRealMem(W32 wSize, char** pPtr, W32* pSegment, tU16* pSelector); 
- /*static*/ int FreeRealMem(tU16 pSelector); 
- /*static*/ int hmiIPXInstalled(void); 
- /*static*/ void GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere(void); 
- /*static*/ void GetIPXToStickItsEarToTheGround(void); 
-   
- // IDA: void __cdecl ClearupPDNetworkStuff() 
- void ClearupPDNetworkStuff(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall MATTMessageCheck(char *pFunction_name@<EAX>, tNet_message *pMessage@<EDX>, int pAlleged_size@<EBX>) 
- void MATTMessageCheck(char* pFunction_name, tNet_message* pMessage, int pAlleged_size) { 
-     LOG_TRACE("(\"%s\", %p, %d)", pFunction_name, pMessage, pAlleged_size); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall GetProfileText@<EAX>(char *pDest@<EAX>, int pDest_len@<EDX>, char *pFname@<EBX>, char *pKeyname@<ECX>) 
- int GetProfileText(char* pDest, int pDest_len, char* pFname, char* pKeyname) { 
-     FILE* fp; 
-     char in_buf[256]; 
-     int i; 
-     int j; 
-     int len; 
-     LOG_TRACE("(\"%s\", %d, \"%s\", \"%s\")", pDest, pDest_len, pFname, pKeyname); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl GetSocketNumberFromProfileFile() 
- int GetSocketNumberFromProfileFile(void) { 
-     char str[256]; 
-     int sscanf_res; 
-     tU32 socknum; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: tU32 __usercall EthernetAddressToU32@<EAX>(_IPX_LOCAL_TARGET *pAddr_ipx@<EAX>) 
- tU32 EthernetAddressToU32(_IPX_LOCAL_TARGET* pAddr_ipx) { 
-     LOG_TRACE("(%p)", pAddr_ipx); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall NetNowIPXLocalTarget2String(char *pString@<EAX>, _IPX_LOCAL_TARGET *pSock_addr_ipx@<EDX>) 
- void NetNowIPXLocalTarget2String(char* pString, _IPX_LOCAL_TARGET* pSock_addr_ipx) { 
-     LOG_TRACE("(\"%s\", %p)", pString, pSock_addr_ipx); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall GetMessageTypeFromMessage@<EAX>(char *pMessage_str@<EAX>) 
- int GetMessageTypeFromMessage(char* pMessage_str) { 
-     char* real_msg; 
-     int msg_type_int; 
-     LOG_TRACE("(\"%s\")", pMessage_str); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall SameEthernetAddress@<EAX>(_IPX_LOCAL_TARGET *pAddr_ipx1@<EAX>, _IPX_LOCAL_TARGET *pAddr_ipx2@<EDX>) 
- int SameEthernetAddress(_IPX_LOCAL_TARGET* pAddr_ipx1, _IPX_LOCAL_TARGET* pAddr_ipx2) { 
-     LOG_TRACE("(%p, %p)", pAddr_ipx1, pAddr_ipx2); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- _IPX_LOCAL_TARGET* GetIPXAddrFromPlayerID(tPlayer_ID pPlayer_id) { 
-     int i; 
-     tU8* nodenum; 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall MakeMessageToSend(int pMessage_type@<EAX>) 
- void MakeMessageToSend(int pMessage_type) { 
-     LOG_TRACE("(%d)", pMessage_type); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl ReceiveHostResponses() 
- int ReceiveHostResponses(void) { 
-     char str[256]; 
-     int i; 
-     int already_registered; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl BroadcastMessage() 
- int BroadcastMessage(void) { 
-     int i; 
-     int errors; 
-     char broadcast_addr_string[32]; 
-     char* real_msg; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall hmiIPXCloseSocket@<EAX>(W32 wSocket@<EAX>) 
- int hmiIPXCloseSocket(W32 wSocket) { 
-     REGS regs; 
-     SREGS sregs; 
-     LOG_TRACE("(%d)", wSocket); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall hmiIPXListenForPacket(_IPX_ECB *pECB_ptr@<EAX>, tU32 pOffset@<EDX>) 
- void hmiIPXListenForPacket(_IPX_ECB* pECB_ptr, tU32 pOffset) { 
-     SREGS sregs; 
-     REGS regs; 
-     _IPX_HEADER* IPX_header_ptr; 
-     _IPX_ECB* sIPXECB; 
-     LOG_TRACE("(%p, %d)", pECB_ptr, pOffset); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall hmiIPXPostListen@<EAX>(_IPX_ECB *pECB_ptr@<EAX>, tU32 pOffset@<EDX>) 
- int hmiIPXPostListen(_IPX_ECB* pECB_ptr, tU32 pOffset) { 
-     LOG_TRACE("(%p, %d)", pECB_ptr, pOffset); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl hmiIPXGetData(char* pData, tU32 wDSize) 
- int hmiIPXGetData(char* pData, tU32 wDSize) { 
-     tU32 packets_checked; 
-     tU32 full_packet_ooer_missus; 
-     _IPX_ECB* ECB_ptr; 
-     static tU32 round_robin_jobby; 
-     LOG_TRACE("(%d, %d)", pData, wDSize); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall hmiIPXSendPacket(_IPX_ECB *sECB@<EAX>, _IPX_ECB **pPacket@<EDX>, char* pHeader@<EBX>, W32 wSize@<ECX>) 
- void hmiIPXSendPacket(_IPX_ECB* sECB, _IPX_ECB** pPacket, char* pHeader, W32 wSize) { 
-     SREGS sregs; 
-     REGS regs; 
-     _IPX_HEADER* sIPXHeader; 
-     _IPX_ECB* sIPXECB; 
-     char* pIPXData; 
-     LOG_TRACE("(%p, %p, %d, %d)", sECB, pPacket, pHeader, wSize); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall hmiIPXSendDataDirect@<EAX>(char* pHeader@<EAX>, W32 wHSize@<EDX>, char* pData@<EBX>, W32 wDSize@<ECX>, _NETNOW_NODE_ADDR *sNode) 
- int hmiIPXSendDataDirect(char* pHeader, W32 wHSize, char* pData, W32 wDSize, _NETNOW_NODE_ADDR* sNode) { 
-     W32 wIndex; 
-     _IPX_ELEMENT* sElement; 
-     W32* pSequence; 
-     LOG_TRACE("(%d, %d, %d, %d, %p)", pHeader, wHSize, pData, wDSize, sNode); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR *sInterworkAddr@<EAX>) 
- void hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR* sInterworkAddr) { 
-     SREGS sregs; 
-     REGS regs; 
-     LOG_TRACE("(%p)", sInterworkAddr); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET *sNetworkAddr@<EAX>) 
- void hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET* sNetworkAddr) { 
-     SREGS sregs; 
-     REGS regs; 
-     LOG_TRACE("(%p)", sNetworkAddr); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall AllocateRealMem@<EAX>(W32 wSize@<EAX>, char* *pPtr@<EDX>, W32 *pSegment@<EBX>, tU16 *pSelector@<ECX>) 
- int AllocateRealMem(W32 wSize, char** pPtr, W32* pSegment, tU16* pSelector) { 
-     REGS regs; 
-     SREGS sregs; 
-     W32 wAddress; 
-     W32 wHandle; 
-     W32 wSegment; 
-     W32 wLinear; 
-     LOG_TRACE("(%d, %p, %p, %p)", wSize, pPtr, pSegment, pSelector); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall FreeRealMem@<EAX>(tU16 pSelector@<EAX>) 
- int FreeRealMem(tU16 pSelector) { 
-     REGS regs; 
-     SREGS sregs; 
-     W32 wAddress; 
-     W32 wHandle; 
-     W32 wSegment; 
-     W32 wLinear; 
-     LOG_TRACE("(%d)", pSelector); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl hmiIPXInstalled() 
- int hmiIPXInstalled(void) { 
-     SREGS sregs; 
-     REGS regs; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall hmiIPXOpenSocket@<EAX>(W32 wSocket@<EAX>) 
- int hmiIPXOpenSocket(W32 wSocket) { 
-     SREGS sregs; 
-     REGS regs; 
-     LOG_TRACE("(%d)", wSocket); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __cdecl GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere() 
- void GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere(void) { 
-     SREGS sregs; 
-     REGS regs; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall hmiIPXInitSystem@<EAX>(W32 wSocket@<EAX>) 
- int hmiIPXInitSystem(W32 wSocket) { 
-     W32 wNIndex; 
-     W32 wIndex; 
-     W32 wMIndex; 
-     unsigned short wSOffset; 
-     unsigned short wLOffset; 
-     LOG_TRACE("(%d)", wSocket); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __cdecl GetIPXToStickItsEarToTheGround() 
- void GetIPXToStickItsEarToTheGround(void) { 
-     int i; 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl PDNetInitialise() 
- int PDNetInitialise(void) { 
-     tU32 timenow; 
-     char profile_string[32]; 
-     char key_name[32]; 
-     int sscanf_res; 
-     int i; 
-     tU32 netnum; 
-     char str[256]; 
-     int mess_num; 
-   
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl PDNetShutdown() 
- int PDNetShutdown(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __cdecl PDNetStartProducingJoinList() 
- void PDNetStartProducingJoinList(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __cdecl PDNetEndJoinList() 
- void PDNetEndJoinList(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetGetNextJoinGame@<EAX>(tNet_game_details *pGame@<EAX>, int pIndex@<EDX>) 
- int PDNetGetNextJoinGame(tNet_game_details* pGame, int pIndex) { 
-     static tU32 next_broadcast_time; 
-     int i; 
-     int j; 
-     int number_of_hosts_has_changed; 
-     char str[256]; 
-     LOG_TRACE9("(%p, %d)", pGame, pIndex); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetDisposeGameDetails(tNet_game_details *pDetails@<EAX>) 
- void PDNetDisposeGameDetails(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetHostGame@<EAX>(tNet_game_details *pDetails@<EAX>, char *pHost_name@<EDX>, void **pHost_address@<EBX>) 
- int PDNetHostGame(tNet_game_details* pDetails, char* pHost_name, void** pHost_address) { 
-     LOG_TRACE("(%p, \"%s\", %p)", pDetails, pHost_name, pHost_address); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetJoinGame@<EAX>(tNet_game_details *pDetails@<EAX>, char *pPlayer_name@<EDX>) 
- int PDNetJoinGame(tNet_game_details* pDetails, char* pPlayer_name) { 
-     LOG_TRACE("(%p, \"%s\")", pDetails, pPlayer_name); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetLeaveGame(tNet_game_details *pDetails@<EAX>) 
- void PDNetLeaveGame(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetHostFinishGame(tNet_game_details *pDetails@<EAX>) 
- void PDNetHostFinishGame(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: tU32 __usercall PDNetExtractGameID@<EAX>(tNet_game_details *pDetails@<EAX>) 
- tU32 PDNetExtractGameID(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: tPlayer_ID __usercall PDNetExtractPlayerID@<EAX>(tNet_game_details *pDetails@<EAX>) 
- tPlayer_ID PDNetExtractPlayerID(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetObtainSystemUserName(char *pName@<EAX>, int pMax_length@<EDX>) 
- void PDNetObtainSystemUserName(char* pName, int pMax_length) { 
- } 
-   
- // IDA: int __usercall PDNetSendMessageToPlayer@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>, tPlayer_ID pPlayer@<EBX>) 
- int PDNetSendMessageToPlayer(tNet_game_details* pDetails, tNet_message* pMessage, tPlayer_ID pPlayer) { 
-     char str[256]; 
-     _IPX_LOCAL_TARGET* remote_addr_ipx; 
-     LOG_TRACE("(%p, %p, %d)", pDetails, pMessage, pPlayer); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetSendMessageToAllPlayers@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>) 
- int PDNetSendMessageToAllPlayers(tNet_game_details* pDetails, tNet_message* pMessage) { 
-     char str[256]; 
-     int i; 
-     int r; // Added by dethrace 
-     LOG_TRACE("(%p, %p)", pDetails, pMessage); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: tNet_message* __usercall PDNetGetNextMessage@<EAX>(tNet_game_details *pDetails@<EAX>, void **pSender_address@<EDX>) 
- tNet_message* PDNetGetNextMessage(tNet_game_details* pDetails, void** pSender_address) { 
-     char* receive_buffer; 
-     char str[256]; 
-     int msg_type; 
-     LOG_TRACE("(%p, %p)", pDetails, pSender_address); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: tNet_message* __usercall PDNetAllocateMessage@<EAX>(tU32 pSize@<EAX>, tS32 pSize_decider@<EDX>) 
- tNet_message* PDNetAllocateMessage(tU32 pSize, tS32 pSize_decider) { 
-     LOG_TRACE("(%d, %d)", pSize, pSize_decider); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetDisposeMessage(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>) 
- void PDNetDisposeMessage(tNet_game_details* pDetails, tNet_message* pMessage) { 
-     LOG_TRACE("(%p, %p)", pDetails, pMessage); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetSetPlayerSystemInfo(tNet_game_player_info *pPlayer@<EAX>, void *pSender_address@<EDX>) 
- void PDNetSetPlayerSystemInfo(tNet_game_player_info* pPlayer, void* pSender_address) { 
-     LOG_TRACE("(%p, %p)", pPlayer, pSender_address); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: void __usercall PDNetDisposePlayer(tNet_game_player_info *pPlayer@<EAX>) 
- void PDNetDisposePlayer(tNet_game_player_info* pPlayer) { 
-     LOG_TRACE("(%p)", pPlayer); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetSendMessageToAddress@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>, void *pAddress@<EBX>) 
- int PDNetSendMessageToAddress(tNet_game_details* pDetails, tNet_message* pMessage, void* pAddress) { 
-     char str[256]; 
-     LOG_TRACE("(%p, %p, %p)", pDetails, pMessage, pAddress); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __usercall PDNetInitClient@<EAX>(tNet_game_details *pDetails@<EAX>) 
- int PDNetInitClient(tNet_game_details* pDetails) { 
-     LOG_TRACE("(%p)", pDetails); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- // IDA: int __cdecl PDNetGetHeaderSize() 
- int PDNetGetHeaderSize(void) { 
-     LOG_TRACE("()"); 
-     NOT_IMPLEMENTED(); 
- } 
-   
- #endif 
-   
- #endif // __MSDOS__ 
-