Date: Fri, 29 May 92 22:44:02 MES From: Thomas Heller Subject: TCPIP server for go32 To: djgpp AT sun DOT soe DOT clarkson DOT edu, Thomas Heller Status: O Hi gang, I'm trying to bring up an X11R5 server under dos using djgpp. In the first step I'd like to avoid writing a complete TCP/IP implementation, so I came up with the following idea: Use the NCSA telnet libraries to compile a resident TCP/IP SERVER program. This program runs in real mode and is compiled with MSC 5.1. It does the following things: - Initialize the network code - call _dos_setvect(tcp_ip_interrupt) to install an interrupt service routine acting as dispatcher for the NCSA subroutines (netlisten, netwrite, netread and so on) - call 'system("go32 Xserver")' to run the djgpp compiled server. The djgpp program can than set up some registers, eventually copy data to the real mode buffer, and issue an int86(tcp_ip_interrupt) to do the work. So far, so good. I patched the NCSA 'minitel' program to use this 'resident' server, compiled with gcc, and it worked fine. Using this TCPIP-server to run my Xserver usually also works nice, but sometimes there are some problems. Typical output: Segmentation Violation referencing address 0 Exception 14 at eip=90999 Exception 14 is a page fault, and eip=90999 is some machine instruction behind int86_retjmp. The faulting instruction is 'pop (%eax)'. I have no idea what this means, and I'm nearly sure my code is ok. Tracing this bug is very difficult, using debug32 instead of go32 crashes the machine (instant reboot, without any message), so I always have to insert some printf's, recompile the module and relink the X-server on my poor 25MHz 386, and look for the output again. I'm not sure if this is a problem of - the X-server - go32 - NCSA telnet - or the combination of all these things. Also I have doubts whether my idea has really been so good... Any help would greatly be appreciated. Thomas Heller, University of Muenster, Germany (BTW: I'm still using version 1.05. And yes, I will try to make this stuff available if it's finished).