Running Legacy Software
This page describes my efforts to keep old software that I have written
running. One would expect to be able to read a document that he wrote
20 years earlier, and so why not expect the same for old software? While
such software is not particularly useful today, the appeal is in dusting
off the bits and still being able to run them.
Computers have the amazing property that all computers are equivalent -
that is, anything that can be computed by a given computer can be
computed by all computers (subject to practical considerations of
performance and capacity). Since computers become more powerful over
time, a modern computer can easily run software written for an older
computer.
The screenshot shows four generations of the String Art program running
simultaneously on a modern PC.
Upper left: Stringy 6 (1981-1983), written in BASIC, is being run
by BASIC 5.1 (1982-1984), a BASIC interpreter written in Z80 assembly
language. The Z80 is being emulated by Gem, a Linux/GTK+ application
that I wrote in C. Despite two levels of translation (an interpreter
running on top of an emulator), Stringy 6 is quite fast on a modern
computer!
Upper right: Stringy 7 (1986-1991), written in the E language, is
compiled to C by the E language compiler, and then compiled to machine
language by gcc. A slightly modified version of Edwin provides the GUI
and windowing API. Like Stringy 7, Edwin is also compiled with the E
language compiler and gcc. Ewlib, written in C, performs library
functions and emulates the EDIX system calls under Linux. All three are
linked together, and viola, Stringy 7 runs!
Lower left: Stringy (1995), written in C for Microsoft Windows,
is being run by Wine. Wine emulates the Win32 system calls under Linux
while natively running the application's code.
Lower right: Stringy (2005), written in C for Linux/GTK+, has the
look and feel of a native application.
About 90% of the software I have written since 1980 still runs today.
|