Motivation
My dad manages all of his documents and calculations, whether private or business-related, with the 30-year-old 16-bit program Lotus AmiPro 3.0. He knows it well, relies on it, has tons of business-related documents and therefore refuses to change to any other text/calculation program.
The problem is that 64-bit Windows does not support ancient 16-bit programs. For obvious reasons, he can't use a 32-bit respectively older Windows Version (Windows XP, Windows 7) as his main OS.
TL;DR
AmiPro runs well on 64-bit with otvdm/winevdm (GitHub). However, the installer is broken and there are some problems with the configuration files located under %WINDIR%
because of read/write permissions.
Goals:
- Use a recent 64-bit Windows 10 as the main system
- Printer support
- Correct handling of file paths
- Open AmiPro by double-clicking a file on the host
- No lags / reasonable performance
- No graphic glitches
What we have tried so far:
- Use a second computer running a 32-bit Windows 7 with NTVDM enabled.
This works fine but it requires us to constantly switch peripherals as well as the monitor input. Files can be synced via a cloud service. However, Microsoft announced that they will no longer allow manufacturers to ship 32-bit Windows versions along with their hardware.
- Use a Virtual Machine with 32-bit Windows 7.
Technically the application runs fine but due to the nature of running virtual machines, several problems occur: Printers do not work out of the box and even if Windows is able to print, AmiPro has a hard time printing to shared network printers. The same holds for file management. VM file share typically mounts folders from the host as a network resource. We have to mount them as network drives (with a letter assigned) in order to make it work.
Startup performance is pretty bad, especially if the VM is not running.
The next big problem was that we could not open files directly from the host. To circumvent this restriction, I wrote a small .NET Application for the host that registers itself as the default application for AmiPros file format .sam
. Every time we start the helper application by double-clicking a file, it converts the host file path to the hopefully correct file path on the guest's network drive we set up earlier and then uses the VMware Workstation Unity cli
to start the VM and start AmiPro afterward with the file path on the guest as an argument.
It works but we even prefer using a second computer to this solution.
- Upgrade AmiPro to the first 32-bit Version for Win95 (Lotus WordPro)
The first 32-bit version reads .sam
files without problems but has some serious graphic bugs and printer problems. It also changed the user interface, especially the interaction with tables and calculations.
- DosBox
AmiPro requires Windows 3.1 to run inside DosBox. It works but we encountered some graphic glitches, printers do not work and file sharing between DosBox and host is also a problem.
- wine (linux / cygwin)
We tried running it via wine on Linux and on Windows. AmiPro is not usable due to graphic glitches, lags and sudden crashes. We did not test the printing capabilities.
- Windows95 App
Someone made a fully functional cross-platform Windows95 Electron App (GitHub) written in JavaScript. However, file sharing between host/guest as well as printing do not work.
- otvdm / winevdm (GitHub)
Recent approach. And ... it works! 🥳
Best solution yet: otvdm/winevdm (GitHub)
Otvdm is a tool/wrapper based on wine to allow 16-bit apps to run on 64-bit Windows. On paper, this is exactly what we need. And in fact, it works great if you set it up correctly.
I could not get it to run with the latest stable version (0.7.0 at time of writing). Fortunately, the master is so far ahead (in terms of commits and applied bugfixes) that the latest nightly build somewhat worked.
By somewhat I mean that there are several problems during the setup process. The installer for 3.1 does not work at all. Winevdm just outputs error messages regarding memory allocation. Luckily, the installer for 3.0 runs without a problem.
AmiPro 3.0 now just runs fine. Even printers work!
Run updates or newer versions like AmiPro 3.1
If you want to install an update or use AmiPro 3.1, I recommend that you install the desired version of AmiPro inside a 32-Bit Windows XP (either VM or old PC) or better a Windows 98/95/DosBox (3.11) and copy the install folder (C:\AMIPRO
) over to your computer.
But there is one gotcha.
AmiPro creates some of its configuration files like AMIPRO.INI
outside the install dir and inside %WINDIR%
. The author of winevdm knows about this and gives the following hint:
Some Win16 programs try to save their settings in %WINDIR%<filename>.ini
In recent Windows, it is not allowed to save to %WINDIR%, so it redirects.
If you installed winevdm under C:\ovtdm - which I strongly recommend - then the %WINDIR%
location is C:\ovtdm\WINDOWS
instead of C:\WINDOWS
.
To get your installer working you have to copy every file starting with AMI as well as the file lotus.ini
from C:\WINDOWS
and the files starting with LOLD from C:\WINDOWS\SYSTEM
on your temporary install machine to C:\ovtdm\WINDOWS
respectively C:\ovtdm\WINDOWS\SYSTEM
on your computer.
Compile it for 64-bit Windows – Source Code needed
We are stuck right now but otvdm looks very promising as it works nearly flawless after circumventing the install process.
The next way to tackle the problem requires the source code. If it is somehow possible to get the abandoned source code of Lotus AmiPro 3.x I could update/rewrite the system calls and compile it for 32-bit/64-bit Windows and make a patch for existing setups.
I already contacted IBM on this behalf. Actually, the support was really helpful and my ticket escalated quickly. I got calls from IBMs Senior Manager, Security Expert Labs, DACH as well as the Director at Product Management of HCL Technologies Germany who pointed me in the right direction with the Windows95 App which eventually led to my research regarding otvdm/winevdm.
If you have access to the source code, questions or any other information please contact me via amipro (at) adroste (dot) com (German or English).