|
|
|
Image SXM was originally compiled in 1993 using THINK Pascal and since about 1995 I have been using the CodeWarrior compiler to create each new version.
CodeWarrior has seen me through Apple's hardware transition from using Motorola 68000 processors to the PowerPC range, and also the software transition from Mac OS 7/8/9 to Mac OS X. If Image SXM was to survive the next hardware transition, from Motorola to Intel processors, I had to change from CodeWarrior to Apple's development system, Xcode.
Image SXM ran on Intel-based Macs because
Rosetta, part of the Mac OS, translates Motorola code into Intel
code. The catch is that Rosetta is no longer supported in
versions of the Mac OS from 10.7 (Lion) onwards.
The CodeWarrior compiler does not compile Mac
applications into Intel code. Apple's compiler Xcode does not
(officially) support Pascal, but since the release of Snow
Leopard I was working on compiling Image SXM with Xcode and the
GNU Pascal compiler. Now that I have
compiled an Intel version of Image SXM, the Motorola version is
redundant except for those who want legacy software to run on
older (Motorola) Macs.
CodeWarrior Pascal and GNU Pascal are 99%
compatible, but it's that 1% that caused all the problems. Image
SXM comprises about 2500 procedures and 1000 functions, spread
across 150 source files. CW Pascal doesn't really care in which
file any particular procedure is defined, but GNU Pascal does --
procedures cannot call other procedures that have not yet been
compiled. This involved a lot of reorganisation and moving many
procedures and functions between source files so that everything
compiles in the right order. It took me a long time to figure
out all the interdependencies of the 3500 procedures/functions
and so map out what the
internal structure of Image SXM needed to be to accommodate GNU
Pascal.
Rewriting the source code so that it compiles
with both CodeWarrior (CW) to generate Motorola code and with
Xcode and the GNU Pascal compiler (GPC) to generate Intel code
has involved a number of changes. I was keen to keep the code
compatible with both compilers as I did not want to maintain two
sets of source code during the transition from Motorola to
Intel.
The letters used to identify the different versions of the application are:
C = CodeWarrior version - the original Carbon
application (v192)
M = Motorola version created by Xcode and GPC
X = Intel version created by Xcode and GPC
The principal changes to the source code have
been:
Beta testers, preferably lots of them. These are the people who ensure that Image SXM is reasonably bug-free:
William Barvosa-Carter |
Hughes Research Laboratories, Malibu, USA |
Barry Bickmore |
Brigham Young University, Provo, USA |
George Boyan |
University of Muenchen, Germany |
Robert Geisler |
Karlsruhe Institute of Technology, Germany |
Renée Heilbronner |
University of Basel, Switzerland |
Richard Legeckis |
National Oceanic and Atmospheric Administration, USA |
Daniel Manocchio |
Kaercher, Winnenden, Germany |
Christoph Meier |
University of Ulm, Germany |
Ernst Niggli |
University of Bern, Switzerland |
Enique Núñez |
Quantimetrix Corporation |
Colin Shaw |
Montana State University, USA |
Dale Stokes |
Scripps Institution of Oceanography, UCSD, USA |
Anders Thorsen |
Institute of Marine Research, Bergen, Norway |
Daniel Westhaver | Roffer's Ocean Fishing Forecasting Service, Florida, USA |
Jeremy Young | University College London, UK |
and I would be glad to hear from any other users who would like to act as beta testers for future versions.
Steve Barrett April 2012 |
|
|