VMODEM 23.3.2014


VMODEM simulates a modem using another internet connection like WLAN-DSL. You can use it to connect non-connected PCs to the internet using a null-modem connection to a WLAN-PC.

5.2.2015: system dependent infos

Windows/Linux compatibility notice:
You must choose the connection type (DSL/Dial-Up), when you install windows or linux. This must be done since the year 2001. If you install a DSL connection and you install a modem afterwards, the installation seems to be complete, but dial-up errors occur. This is caused by system libraries, which are only compatible to DSL or Dial-Up modems. They are installed only once during the full operating system installation. During the development of VMODEM no computer was found, where the problem didn't occur. You can install a virtual machine (for example VMWare emulator) and install the operating system on it to avoid this. But if you do this there can be problems with the support of the serial port by the emulator.

ATARI ST:
Using the internet with Draconis or WENSUITE (ATARI Browsers) in combination with VMODEM is not possible because of compatibility reasons. But you can read the HTM files from old shareware and magazine CD-ROMS in combination with VDISKRS (http://www.muenster.de/~dambergj/VDISKRS1.1.zip) and a null modem. You can use COM2COM from the Com2TCP package (http://www.muenster.de/~dambergj/com2tcp.zip) to use an existing internal modem instead of VMODEM.

27.3.2014: Version simulating IPV4 with IPV6 included

VMODEM simulates a modem using another internet connection like WLAN-DSL. The program doesn't require a new internet service provider for simulation. It can be used to go online with older computers or emulators. If you want to use the internet with an old computer, connect it to a newer machine with a null modem cable, modify the comport number in comport.ini and start VMODEM. Set up an internet connection on the old computer. Turn off all compression options and network protocols different from TCP/IP in the control panel of the operating system. The DNS server address may be received automatically. Any internet service provider phone numbers are accepted but those starting with 9. They are reserved for internet null modem connections. The COM port settings of the computers should be the same. Using the Internet this way works fine with Win 95 and Win 98. Some Linux PPP dial-up programs require compression. My computers from Win XP and newer can run with WLAN Internet access or modem dial-up connection but not both at the same time. If you want to use the virtual modem with an emulator emulating a system inside Windows, you need two serial ports connected with a null modem cable or a virtual serial port pair. Because the opensource software com0com didn't work on my system and other virtual serial port pairs were commercial, I wrote a virtual COM port pair for Windows XP, Win Vista, Win 7 and Win 8. There are x64 versions for Win Vista, Win 7 and Win 8. It is based on a Microsoft VC++ sample.

Serial Port Pair Win 32 (Vista, 7, 8) Download
Serial Port Pair Win x64 (Vista, 7, 8) Download
Serial Port Pair Win XP Download


[Only Windows 8]
The driver is unsigned. Win 8 can't install unsigned drivers with testsigning turned off, which is the default, because of security reasons. Because the driver isn't signed, it is distributed free as OpenSource. You can compile it with Visual Studio 2012 Professional (commercial) and Windows Driver Kit 8.0 (Microsoft, free).
To turn the installation of unsigned drivers on, process the following steps:
1. Open Control Panel
2. Open Update and Recovery
3. Choose Recovery
4. Choose Restart for Advanced startup
5. Choose Troobleshoot
6. Choose Advanced option
7. Choose Startup settings
8. Select Restart
9. After the restart disable driver signing enforcement with the F1...F12-keys
[Only Windows 8: end of instruction list]

The serial port pair can't transmit I/O requests, which start with a special sequence, which is 31 byte long. This sequence is very unlikely and was introduced to avoid using I/O control with large amounts of data. Install the serial port pair server and the serial port pair client with the windows "add legacy hardware" function (located in the device manager). The device manager can be accessed in the control panel. You must select an item in the device list, if you want to access the menu item for adding legacy hardware. Enter the COM port number of the server in comport.ini and the COM port number of the client in your emulator. Setup a dial-up internet connection in the emulator.

Null-modems are incorrectly wired for online carrier detect usage. VMODEM and Serial Port Pair can simulate this, if you start VMODEM with the -v option ("VMODEM -v"). VMODEM responds with "OK" and "CONNECT" to all commands for dial-up compatibility. If you want a positive response only for supported commands, start VMODEM with the -f option ("VMODEM -f"). Two computers can be connected over the internet as if they were connected with a null modem cable. Start VMODEM on the first computer and read the IP address. Start VMODEM with the -i option and the IP-address on the second computer (example: "VMODEM -i 123.124.125.126"). VMODEM converts the address into a virtual telephone number. Start VMODEM without the -i option on the second computer. You can dial this number in your terminal program or game to establish a simulated null modem connection over the internet. There are two versions of VMODEM: VMODEM.exe requires the Visual C++ 2008 Runtimes. VMODEMVC2012 requires the Visual C++ 2012 Runtimes. The Visual C++ Runtimes (www.microsoft.com, free) are often already istalled by other programs. VMODEM.exe requires Win XP, VMODEMVC2012 Win 8. You can compile the program in VMODEMsrc for other platforms. You can even use the free express version of Visual C++ for this task. VMODEM is OpenSource. You can download the VC++ 2008 runtimes from http://www.muenster.de/~sak/3dvideocreatorgl.zip. There were incompatibility errors using Serial Port Pair and VMWare player, but they also occured with hardware ports.
VMODEM supports UDP and TCP sockets initiated by clients. If you want to use server sockets (old computers usually aren't used as servers and newer Windows versions require to deactivate the firewall for creating them), you must enter the port numbers in the tcp.ini and udp.ini files. Then copies of the server sockets are created on the newer computer with the internet access and incoming connections are forwarded to the old computer or emulator. The port numbers used by a server program are usually mentioned in the documentation of a program or can be detected with a special firewall, which always asks, if creating a server socket listening on a special port is allowed. Random port numbers requested by a remote program on the internet are not supported, but this can be called suspicious.

27.3.2014
The IPV6 version performs IPV6 data transfer on the internet and simulates IPV4 addresses for the old computer with the simulated dial-up connection. It is compiled for Win8 and above (use the VC++ 2012 Runtimes!). If you use Win8 with IPV6 enabled, it doesn't mean, that your PC is online with IPV6. You can test it with special internet sites like test-ipv6.com or ipv6-test.com!
The source file is VMODEMipv6.cpp in the source files folder. The IPV6 implementation is based on a sample from:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms737535(v=vs.85).aspx