TweetFollow Us on Twitter

Volume Number:10
Issue Number:4
Column Tag:Demonstration

Building The SimpleAPP Demonstration Application

By Richard Clark

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

Even though a program written for a Power Macintosh can use the same source code as a 68K Macintosh, the build process is different. Power Macintosh development uses a new set of compilers and linkers, and introduces the first fundamentally new Macintosh development system in several years - Metrowerks’ “Code Warrior.”

Not only are the tools different, but “native” Power Macintosh executables use a different format than 68K executables. “Native” application code is stored in the data fork of a file, and requires a ‘cfrg’ resource to notify the system that PowerPC code is present. The ‘cfrg’ resource describes several major things about the fragment or fragments in the current file:

• Code type (only PowerPC is supported at present)

• Whether this is a stand-alone fragment, or an overpatch to another fragment

• Version information for this fragment

• Is this a library or an application? (There’s also a value for “is a drop-in”, but the system only looks for ‘cfrg’ resources in applications and shared libraries. The third value is supplied for applications which include cfrg resources in their extensions and parse these resources directly. The “ModApp” sample included with both the MetroWerks and Apple development environments includes a cfrg parser.)

• Is this on disk, or in memory? (An additional value, “on disk segmented” is reserved for future use.)

• If this is on disk, what is the offset to the start of the container? This allows applications to reserve the first part of the data fork for application-specific information (though Apple is discouraging developers from writing to the data fork of a running application.) Also, what is the length of the container.

These two fields serve another purpose besides allowing an application to store information in the data fork - the data fork may contain multiple containers, and the associated ‘cfrg’ resource may have an entry for each container.

• The name of this fragment. This is especially important for shared libraries as it allows the name of a shared library to be independent from the name of its file. If the user renames a shared library, nothing will break. This also supports packing multiple fragments into the same file as described above.

• If this is an application, the stack size (or 0 for the default.) Also, the “appSubFolderID” field can be used if an application maintains a folder full of shared libraries. The application can include an ‘alis’ folder alias resource in its resource fork, and place the ID number of that resource into the cfrg.

This resource has to be added as part of the build process.

Building with Code Warrior

SimpleApp is easy to build with code warrior, though you have to set the appropriate ‘cfrg’ and ‘SIZE’ resource values in the Preferences Dialog. Code Warrior accepts only a subset of the ‘cfrg’ information at present (whether this is an application or a Shared Library, the fragment’s name, and the default stack size), but these are adequate for our purposes.

Building the SimpleApp code resources is a bit more interesting. You have to specify that you are building a stand-alone module and set the file’s type and creator. (This type and creator indicates to SimpleApp that this is disk-based code.)

The other important setting specifies the code’s main entry point, initialization, and termination routines. In an application, these routines (typically called __start, __initialize, and __terminate) are supplied by the runtime library. Since our code resource has its own special routines, those names must be supplied to the “Linker” part of the Preferences Dialog.

If you’re building disk-based code, that’s all you have to do. If you want to create resource-based code, SimpleApp comes with an auxiliary application (DataToRes) which will take a SimpleApp ‘DPEF’ file (with code in the data fork) and turn it into a ‘RPEF’ file with code in a ‘RPEF’ resource.

Building with MPW

SimpleApp also comes with a MPW makefile. Building the application and the external code is a simple matter of compiling and linking, with one complication. The compiler and linker emit code in the XCOFF (Extended Common Object File Format) used by IBM, but the Power Macintosh prefers PEF. The Macintosh on RISC SDK supplies a “MakePEF” tool to convert XCOFF to PEF. When you run this tool, you must supply not only the file to be converted, but also a set of “library name mapping” rules that remove the “.xcoff” extension from the shared library names:

/* 1 */
SimpleApp ƒƒ SimpleApp.xcoff
 MakePEF SimpleApp.xcoff -o {targ} 
 -l InterfaceLib.xcoff=InterfaceLib

Another option to MakePEF lists the Main, Initialization, and Termination routines. (If the “main” routine was specified to the linker, it doesn’t have to be supplied to MakePEF.)

/* 2 */
'PICT Viewer' ƒƒ PICTViewer.xcoff
 MakePEF {deps} -o {targ} 
 -i OurInitRoutine -t OurTerminationRoutine 
 -l InterfaceLib.xcoff=InterfaceLib

The PowerPC linker performs dead code stripping, so you have to tell the linker to retain the Initialization and Termination routines. You can do this with the “-dead off” option, or by exporting the Initialization and Termination routines:

/* 3 */
PICTViewer.xcoff ƒ PICTViewer.c.o {XCOFFLibs}
 PPCLink {deps} -o {targ} -main OurMainRoutine -sym {SYM} 
 -export OurInitRoutine,OurTerminationRoutine

Finally, just as Code Warrior creates code in the data fork, so does MakePEF. This could create a problem if you wanted to create resource-based code, but MPW users can use a “Rez” script to read a PEF file into a resource:

/* 4 */
// File: Chaos.r
// This file includes the resources from a resource file
// (Unlike SimpleApp, an external don't need a 'cfrg' or
// 'SIZE' resource)

read 'RPEF' (128) "Chaos.PEF";


Community Search:
MacTech Search:

Software Updates via MacUpdate

Square Rave guide - How to grab those te...
Square Rave is an awesome little music-oriented puzzle game that smacks of games like Lumines, but with its own unique sense of gameplay. To help wrap your head around the game, keep the following tips and tricks in mind. [Read more] | Read more »
Snowboard Party 2 (Games)
Snowboard Party 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Crowned the best snowboarding game available on the market, Snowboard Party is back to fulfill all your adrenaline needs in... | Read more »
The best games like Animal Crossing on m...
Animal Crossing amiibo Festival is out right now for the Wii U, reminding us of just how much fun that world can be. Or at least to go back and check in on our villages once in a while. [Read more] | Read more »
Between 2 Taps - Tap for Tap interview M...
Hello, and welcome back to Between 2 Taps, Tap for Tap’s Indie Dev interview series. [Read more] | Read more »
Facility 47 (Games)
Facility 47 1.0.1 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0.1 (iTunes) Description: You wake up alone and freezing in an icy cell. You try the cell door but it’s locked, it seems that you are stuck with no... | Read more »
The best Photoshop alternative on iPad
Instagram and Lightroom are great and all, but sometimes people need to get extra creative with their image editing.Like, Photoshop creative. If you're one of these people, take a look at our pick for the best mobile Photoshop experience on iPad... | Read more »
The Walking Dead: No Man’s Land guide -...
A new update for The Walking Dead: No Man’s Land was released last week, making it the perfect time for you to head back to your base and take out some walkers. Here’s the lowdown on what’s new to the game, and how to take advantage. [Read more] | Read more »
Goat Rider guide - Tips and tricks to st...
We've all been there. One second, we're riding high on a crazed goat, and the next, we've been tossed off it like someone who's no good at goat ridin'. [Read more] | Read more »
Real Boxing 2 CREED: How to become a gre...
Just in time for Rocky fans who can’t wait to see CREED, the latest movie, we have the official tie-in game,Real Boxing 2 CREED. It builds on the success of its predecessor and there’s lots to take in so we at 148apps thought we’d run you through... | Read more »
CoinOp Heroes 2 guide - How to build an...
CoinOp Heroes 2 justlaunched and, like all clickers, it's dangerously addictive stuff. You have to furiously tap your screen to defeat wave after wave of foes and earn an insane amount of cash to spend on character upgrades and an army of minions... | Read more »

Price Scanner via

Best Buy Black Friday deals: Up to $200 off M...
Best Buy has posted their Black Friday sale prices for 2015. Save on MacBook Pros, MacBooks, MacBook Airs, iMacs, iPads, and Apple Watches. Choose free shipping or free local store pickup (if... Read more
Save $30-$40 on new Apple TVs after rebate
Adorama has new Apple TVs on sale for up to $40 off MSRP after mail-in rebate, good through December 15th. Shipping is free, and Adorama charges NY & NJ sales tax only: - 32GB Apple TV: $119.99... Read more
13-Inch Haswell MacBook Air At Two Years – Th...
The 13-inch mid-2013 “Haswell” MacBook Air I ordered in Apple’s November 2013 Black Friday sale was my first new Mac in four and a half years — the longest interval I’ve gone between system upgrades... Read more
Target Black Friday Early Access deals: $100...
Target is offering early access to their Black Friday deals on Apple products on their online store for today, the 25th, only. Choose free shipping or free local store pickup (if available): - Apple... Read more
BlackBerry Q3 Mobility Index Report Finds iOS...
BlackBerry has announced results of its thirteenth Good Mobility Index Report, showing that organizations are increasingly building custom secure apps. Among Good Powered by BlackBerry (formerly Good... Read more
Wednesday roundup of early Black Friday Mac s...
Save up to $500 on a new Mac with these early Black Friday deals from Apple resellers, currently the lowest prices available for these models: (1) B&H Photo has all new Macs on sale for up to $... Read more
iPod nano on sale for $119, $30 off MSRP
Walmart has the 16GB iPod nano (various colors) on sale for $119.20 on their online store for a limited time. That’s $30 off MSRP. Choose free shipping or free local store pickup (if available). Sale... Read more
Adorama Black Friday deals: Up to $400 off Ma...
Adorama has released their Black Friday deals for 2015. Save up to $400 on MacBook Pros, $200 on MacBooks and MacBook Airs, and $270 on iMacs. Use code RYBFDEAL during checkout to see these prices.... Read more
B&H Photo Deals: $200 off 12-inch 1.2GHz...
In addition to the B&H Photo Black Friday week sales we posted yesterday, B&H has lowered their price on two products to $200 off MSRP: - 12″ 1.2GHz Gray Retina MacBook: $1399 save $200 - 13... Read more
Best Buy Early Access: Today only, Up to $125...
Best Buy has iPad Air 2s on sale for up to $125 off MSRP and Apple Watch models on sale on their online store for up to $100 off MSRP with special codes through midnight CT tonight. Choose free... Read more

Jobs Board

Hardware Systems Integration Engineer - *App...
# Hardware Systems Integration Engineer - Apple Watch Job Number: 39380139 Santa Clara Valley, Califo ia, United States Posted: Apr. 23, 2015 Weekly Hours: **Job Read more
Sr. Technical/Project Manager, *Apple* Educ...
# Sr. Technical/Project Manager, Apple Education Job Number: 36588557 New York City, New York, United States Posted: Jul. 30, 2015 Weekly Hours: 40.00 **Job Summary** Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Merchant Operations Manager: *Apple* Pay -...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more than Read more
*Apple* Pay QA Manager - Apple Inc. (United...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more than Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.