XCMD/XFCN on Rev 2.6.1 Classic
benr_mc at cogapp.com
Fri Jul 27 13:16:13 EDT 2007
Long preamble, sorry.
I'm trying to upgrade an ancient installation at a client. Many eons ago it
was in HyperCard. A few eons ago, we converted it to Revolution; there's a
stack with most of the code, which is opened and run by a little standalone
whose only job is make the resources available and then open the mainstack.
The resources in question being a pile of XCMD and XFCNs. This was done with
Rev 1.0 or 1.1. By keeping the resources with the standalone, we were able to
continue making the occasional required tweaks to the stack.
Recently, we've done another pass on the project, and made the whole thing
work in Rev 2.8 on OS X; this has involved replacing all but one of the old
XCMD/XFCNs in favour of transcript routines. The sole remaining XFCN is not
only very substantial and would require a lot of work to implement in
Transcript; more importantly it is critical that it produces exactly the same
results for a given set of inputs as a related (written in C) application.
The external and the application share the relevant library of code in order
to ensure this. For the new "latest Rev" version, therefore, we took the
source code for this one hold-out XFCN and recompiled it as a new-style
Revolution external. All this works fine.
There is one small problem; the client still wants to be able to run this
installation on their Mac running Classic. No problem, I thought: we just
need to recompile the old classic standalone/launcher under Rev 2.6.1 Classic,
and make sure that we keep the big stack in "legacy format". This launcher
can keep using the original version of the XFCN, while the alternative, OS X
native, Rev 2.8 based launcher uses the new Revolution External version.
Here's where we get to the problem. I cannot seem to make a standalone using
Rev 2.6.1 that can access an XFCN. Searching the archives, I find that Tim
MacKenzie enquired on this topic in February this year, and Jacque wrote:
> There is currently no OS 9 engine for the latest Revolution build, so
> you will need to regress to 2.6.x to get that engine when buildling a
> standalone. Once you have that and have built the standalone, open a
> resource fork using ResEdit (or similar) and install the XCMD just as
> you did with HyperCard. After that, usage is the same as in HC. Just
> call the XCMD using the syntax you used in HC.
Seems simple... can't make it work. I also messed around with combinations of
starting to use a stack that contains the resource; setting the "externals";
er... anything I could think of. Couldn't raise a ghost.
Does anyone have a suggestion?
More information about the Use-livecode