Running Legacy Software
This page describes my efforts to keep old software that I've written
running. One would expect to be able to read a document that he wrote
20 years earlier, 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've written since 1980 still runs today.
|