XCMD/XFCN on Rev 2.6.1 Classic

Ben Rubinstein benr_mc at cogapp.com
Fri Jul 27 13:16:13 EDT 2007

Greetings all,

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?


- Ben

More information about the Use-livecode mailing list