Commodore VIC-20 can easily communicate with a c64 and they can be used to play network games. The possibility to connect the two systems via the user port was suggested by many readers after our Networking VIC-20 tutorial, but the news is that the technique works well also inside the WinVice emulator.
As you see in the pictures it was possible to make two emulated VIC-20 to play naval battle one against the other across a TCP/IP connection. And also, the communication perfectly works with an emulated C64. This tutorial explains you how to do it.
Connecting two emulators on the same machine
To try out this communication technique you just need:
- One PC – we used a Windows 10 laptop
- The socat utility – we downloaded a 64bit version from here. Unpack the zip archive with 7zip, then rename and move the obtained folder into something handy for you such as C:\socat
- WinVice emulator, we used the 3.1 version for Windows 64 but it should work on other versions and platforms, too
- Our vic20-network diskette (free download link at the bottom of this post)
Here are the basic steps:
A . the command:
socat tcp-listen:25232 tcp-listen:25231
will implement the virtual null-modem cable between the two emultators, it has to be launched inside a command shell on the PC.
So, first of all you have to open a CMD prompt from the Windows menu, and launch the above command from the C:\socat folder (or wherever you’ve put socat). Please always check that socat keeps running as it implements the virtual link cable between the two emulators.
B. Emulator #1 will send/receive on port 25232
C. Emulator #2 will send/receive on port 25231
D. After configuring and launching the two emulators (see next section) we load and run the connection software inside them.
TERM1200 is for testing communication (VIC to VIC and c64 to c64 or even VIC-c64), and BATTNAVEMU is for net play (only for 16k VICs!).
Configure each of the two VICE emulators by opening RS232 settings:
- RS232 settings->RS232 userport settings, Enable emulation ON. 1200 baud
- RS232 settings->RS232 settings, put in every field 127.0.0.1:25232 (for VICE#1) or 127.0.0.1:25231 (for VICE#2)
- File/Attach drive 8… select our vic20network.c64 file
- File/Reset Hard Reset
- Load the TERM1200 program and RUN it
Please note that the TERM1200 program is so short and simple that you can even type it/paste it:
Connection parameters (Compatible with VICE and c64)
After a few experiments, we have seen that the connection has to be made with:
It means: 1200 baud, 8 bit word, 1 stop bit, parity disabled, 3-line handshake
in order to work flawlessly on our version VICE emulator (WinVice 3.1 for Windows 64bit). This works well also on the emulated c64.
So, for naval battle we had to modify the original game (lines 10 and 60010) so that the OPEN istruction opens the connection accordingly. We still need to test if the above parameters work also with the physical cable.
Similar modifications will allow also HAPPYLINK and HORSE RACING to work. They can be found on the same diskette.
The next natural step would be that of testing this technique with two emulators running on two separate computers over the same LAN, then over the Internet.
Also, we would try to make the emulated VICs and c64s to connect ordinary websites, with the help of a properly configured socat command. This could have also a physical counterpart in the real world, implemented with a proper internet modem. This would open a world of possibility of implementing a new generation of network/multiplayer games for the old vintage commodore computers.
Download the vic-network.d64 diskette for free from:
It is indeed very simple to put into communication two Commodore VIC20 or c64s. With the help of emulators we can today cheaply experiment and develop distributed applications for these vintage systems. The sky is the only limit!