TweetFollow Us on Twitter

Powering Up
Volume Number:10
Issue Number:1
Column Tag:Powering Up

Moving to PowerPC

What do you need to get ready for Macintosh with PowerPC

By Richard Clark and Jordan Mattson, Apple Computer, Inc.

About your tour guides

For the next six months we will be serving as your tour guides, showing off the work of some of the best talent at Apple Computer. Therefore, we thought that it was appropriate to introduce ourselves to you:

Richard Clark - is a senior instructor and course designer in Apple’s Developer University group. No stranger to new technologies, Richard spearheaded the System 7, AppleScript, and PowerPC developer training projects, and is presently offering PowerPC classes to Apple’s engineers and third-party developers.

Jordan Mattson - is a product marketing manager in Apple’s Developer Product’s group. Jordan has been at Apple for seven years and in that time has been a product manager for MacsBug, ResEdit, MPW, and now our PowerPC developer tools.

What is Powering up?

Welcome to Powering Up our new monthly column about preparing yourself and your code for Apple’s next generation Macintosh® platform - Macintosh with PowerPC™. In this column we will give you the straight scoop on Macintosh with PowerPC, give you the information that you need to move your current applications to the PowerPC processor-based systems, and give you the background to create new applications that exploit the new features of the Macintosh with PowerPC.

Sometime in the first half of 1994, Apple Computer, Inc. will introduce Macintosh with PowerPC: the next generation of Macintosh computers, based on RISC technology, that will boost the base-level performance of Macintosh systems to two to four times that of today’s high-end Quadras. And, while other computer companies are relegating their RISC offerings to the high-end or to specific market niches, Apple will drive PowerPC processor-based systems throughout the Macintosh product line. Our intention is to, over time, convert from Macintosh with 68K to Macintosh with PowerPC at every price point.

What is Macintosh with PowerPC?

Since the announcement of our intention to deliver Macintosh systems based on PowerPC, there has been lots of misinformation and supposition circulating. If you want to make yourself an instant expert on Macintosh with PowerPC, remember the following:

• It’s a Macintosh - Because Macintosh with PowerPC is first and foremost a Macintosh, almost everything that you know about programming Macintosh is still true. This also means that it is extremely easy for you to move your application over to Macintosh with PowerPC. A number of developers have been able to port their major applications over to PowerPC in as little as two weeks and have seen substantial performance improvements.

• Your software runs - Due to the high fidelity, high performance emulator included in the system software of all Macintosh with PowerPC systems, today’s 68K applications run just fine, and run fast.

• New software flies - those developers that choose to make the move to PowerPC will find that they are richly rewarded. The average application, without much work on your part, can expect to enjoy a performance boost of 2 to 4 times what you see on today’s high-end Quadras.

Making the move

In preparing yourself and your application for Macintosh with PowerPC, much of this work can be done before you get your hands on development tools or a Macintosh with PowerPC system. In the rest of this month’s column, we will give you an overview of what is involved in preparing your source code to make the move to Macintosh with PowerPC and tell you what you can do today to get ready.

Basic Macintosh Compatibility

While Macintosh with PowerPC is a Macintosh, the first step in making the move to PowerPC is making sure that your application is faithfully following the Macintosh compatibility guidelines that Apple has been preaching for years. While programs could get away with a lot in the past, porting certain managers over to the PowerPC architecture gave Apple's engineers a chance for a “clean start". Therefore, many of the suggested compatibility rules are actually going to be enforced on Macintosh with PowerPC.

The rules for ensuring your code will run on Macintosh with PowerPC are essentially the same as those you’ve heard all along from Macintosh Developer Technical Support. (The following discussion highlights some key points from Technical Note M.OV 13 “10+ Commandments" by Rich Collyer and Dave Radcliffe, and incorporates some additional PowerPC-specific information. In addition, more information on programming for the PowerPC can be found in the self-paced “Introduction to RISC and PowerPC” course available from APDA.)

• Minimize use of low memory

• Avoid writing to or reading from hardware directly

• Write 32-bit clean code

• Don't intermix data and code

• Avoid patching traps

There are a few new rules that apply to the new machines:

• Eliminate dependencies on 80- and 96-bit floating point

• Isolate dependencies on the runtime model

• Don't assume you know what's going to be fast

Low memory globals: Applications that use low-memory globals may no longer be compatible when Apple revises the system software. This hinders Apple from adding commonly requested features to the system and enhancing system performance.

Since some applications depend critically on the documented low-memory globals, Apple is supplying a set of accessor calls for all documented low-memory globals. (These calls are in a new set of C/C++ header files located on E.T.O. 12 and coming soon to better development systems near you.) For compatibility reasons, the accessors are implemented as macros on the 68K, but are implemented as actual routines on Macintosh with PowerPC.

These accessor routines should be used now to replace explicit pointers to low memory. However, this is not a license to use undocumented low-memory globals. Apple makes no guarantee that these globals will continue to be available in future system software releases.

Avoid writing to hardware: In addition to the low-memory locations used by the operating system and Toolbox, the Macintosh often uses special addresses for Memory-Mapped I/O. These addresses vary from Macintosh to Macintosh, and limit your code to working with particular versions of the hardware.

Write 32-bit clean code: 68K Macintosh computers can be set to use only the lower 24 bits of an address, for compatibility with the original 68000 addressing model. In contrast, the PowerPC processor-based Macintosh computers will use all 32 bits of a memory address. Most developers have removed dependencies on 24-bit addresses, but some are using the upper bit of an address for other purposes. If you are doing this, be aware that your code is only 31-bit clean. It will not work on Macintosh with PowerPC.

Don’t intermix data and code: The PowerPC runtime system may load native code into a special read-only area. You should not include data either in your code or at the end of your code, nor should you have self-modifying code. A future column will discuss how the new runtime system supports static data (i.e. global variables) for all code.

Avoid patching traps: Trap patches can impact the performance of a PowerPC processor based Macintosh system due to some additional dispatching work that the system has to perform. In addition, the new machines include special “split traps” which incorporate separate versions tuned for the best performance when called from emulation or when called from “native” code. These are traps that had no cause to be patched in the past (such as AddPt), and will not be patchable in the future.

Eliminate dependencies on 80- and 96-bit floating point: The PowerPC processor follows the IEEE 754 standard for floating-point arithmetic. In this standard, float is 32 bits, and double is 64 bits. (Apple has implemented a 128 bit “long double” type in software for those applications which need the extra precision.) However, the PowerPC Floating-Point Unit does not support Motorola’s 80/96-bit extended type. Therefore, any code which depends on “extended” should be converted to one of the hardware-supported types (for speed) or long double (for precision.)

Emulated code can use the 80 and 96-bit extended types via SANE, but the emulator does not support direct calls to the 6888x FPU. Therefore, if you are porting code which contains direct 6888x FPU calls, you should re-code using portable ANSI C. Don’t be tempted to require that the user install a “software FPU” which will run slower than SANE - do the right thing!

Isolate dependencies on runtime model: The existing runtime model contains many features that are processor dependent or optimized for systems with extremely limited memory. If your code depends on parts of the 68000 runtime architecture (such as setting and restoring A5, examining the stack, or looking at the jump table entries), you should try to eliminate this code, or at a minimum, wrap conditional compilation directives around it.

Don’t assume you know what’s going to be fast: The new Macintosh with PowerPC computers are being tuned for both compatibility and performance. Programs which assume that 6888x-direct calls are faster than “standard” floating-point calls will be in for a surprise, as will programs that assume that one particular toolbox call is faster than another. Write your code to be as generic and compatible as possible, then test it once you get your hands on the new systems.

Compiler Compatibility

With a new processor comes new compilers. And the new compiler from Apple, as well as the compilers coming from third-parties, is a lot stricter than the 68K compilers you are used to using. Therefore, you may need to spend some time preparing your code for compilers which adhere more closely to the ANSI standards.

While the ultimate test will be re-compiling on the new PowerPC compilers, you can learn much from your current compiler. THINK C users can use the “ANSI Settings” button in the compiler options dialog to get a feel for what the new compilers will be like. (When using the “ANSI compatibility” settings, turn “THINK C extensions” back on so that the compiler will recognize the “pascal” keyword in the Macintosh headers. Selecting “4 byte ints” is also a good idea, as this is the size used by both the MPW and PowerPC compilers.) MPW users already have a fairly ANSI-compliant compiler, though they should use the “-r” flag to detect calls to undefined routines.)

In any case, running the MPW C and C++ compilers is a good benchmark to illustrate what will and will not work on the PowerPC compilers. The MPW compiler doesn’t implement THINK C’s “asm {}” directive, and neither does the PowerPC compiler. (Such in-line assembly should be re-written as portable ANSI C, not just moved into PowerPC assembler. You should only consider going to assembler after testing the compiled code for performance.) MPW doesn’t use precompiled headers by default, and the PowerPC compilers may not support them at all. MPW watches for pointer assignment incompatibilities that THINK C passes by. In general, your code will be more portable after running through two compilers than after running through only one.

ANSI Compatibility

Just being able to survive the MPW compiler isn’t enough - your code has to survive an ANSI-compliant compiler and a new runtime environment. Fortunately, you can take three simple steps to improve your code’s portability and robustness:

• Don’t make assumptions about the size of an int

• Add function prototypes and self-prototyping functions

• Remove language extensions where you can

Don’t make assumptions about the size of an int: Portable C code should not make assumptions about the size of an integer. For example, THINK C assumes int is 16 bits unless you set the “4 byte ints” option. MPW and the current PowerPC compilers all assume that int is 32 bits. Therefore, you should perform a global search for int in your code and replace these references with something less compiler-specific. The safest solution is to declare some “virtual types” such as a 16-bit int16 and a 32-bit int32 in a special header. You can modify for each compiler and still retain portability.

In general, you should use int only if you need the “natural” word size of the machine, as you do for loop counters, array indices, and other values that are likely to be manipulated in registers and that require efficient handling by the processor.

Add function prototypes and self-prototyping functions: Function prototypes are an ANSI addition to the C language which allows the compiler to check (and potentially coerce) the values being passed to and from a function. The PowerPC compilers, which are true ANSI compilers, do a better job of type checking (and may be able to generate better code) if you use declarations in this style. Adding function prototypes also allows the compiler to catch potential parameter-passing errors at compile time instead of allowing the debugger to catch them at runtime.

Remove language extensions where you can: The first step is to make your C code as ANSI-compliant as possible, except for the “pascal” keyword, which is Apple-specific, and "//" comments which are part of C++ but not ANSI C. All current Macintosh C compilers (including PowerPC compilers) implement these language extensions.

One major challenge that faces C++ programmers is the use of handle-based objects. Handle-based objects are a non-ANSI extension to C++ that is not supported by the PowerPC compilers. Therefore, you must change your code to use pointer-based objects and update to a version of your class library that supports pointer-based objects. (One advantage of this change is that it gives you access to C++'s full range of features.)

Coming next month

We hope that this brief introduction to PowerPC development will help you begin preparing your code for the next generation of Macintosh computers. In next month’s column, we will give you are tour of the PowerPC processor architecture, give you a taste of PowerPC assembly language, and show you why you won’t be writing much assembly language in the future.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

FileMaker Pro 19.4.2 - Quickly build cus...
FileMaker Pro is the tool you use to create a custom app. You also use FileMaker Pro to access your app on a computer. Start by importing data from a spreadsheet or using a built-in Starter app to... Read more
Adobe Illustrator 26.0.3 - Professional...
You can download Adobe Illustrator for Mac as a part of Creative Cloud for only $20.99/month. Adobe Illustrator for Mac is the vector graphics classics in the design industry. It is a digital... Read more
WhatRoute 2.4.9 - Geographically trace o...
WhatRoute is designed to find the names of all the routers an IP packet passes through on its way from your Mac to a destination host. It also measures the round-trip time from your Mac to the router... Read more
Notion 2.0.20 - A unified workspace for...
Notion is the unified workspace for modern teams. Notion Features: Integration with Slack Documents Wikis Tasks Release notes were unavailable when this listing was updated. Download Now]]> Read more
Monterey Cache Cleaner 17.0.2 - Clear ca...
Monterey Cache Cleaner is an award-winning general-purpose tool for macOS X. MCC makes system maintenance simple with an easy point-and-click interface to many macOS X functions. Novice and expert... Read more
Firetask Pro 4.6.8 - Innovative task man...
Firetask Pro represents the next generation of easy-to-use, project-oriented task management apps. By combining David Allen's powerful Getting Things Done (GTD®) approach with classical task... Read more
Smultron 13.0.4 - Easy-to-use, powerful...
Smultron 13 is the text editor for all of us. Smultron is powerful and confident without being complicated. Its elegance and simplicity helps everyone being creative and to write and edit all sorts... Read more
Box Sync 4.0.8057 - Online synchronizati...
Box Sync gives you a hard-drive in the Cloud for online storage. Note: You must first sign up to use Box. What if the files you need are on your laptop -- but you're on the road with your iPhone? No... Read more
Audio Hijack 3.8.10 - Record and enhance...
Audio Hijack (was Audio Hijack Pro) drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio... Read more
Direct Mail 6.0.1 - Create and send grea...
Direct Mail is an easy-to-use, fully-featured email marketing app purpose-built for macOS. Create, send, and track great looking email campaigns that get results. Start your newsletter by selecting... Read more

Latest Forum Discussions

See All

Hopefully Not Jared’s Last Show – The To...
My suspicions from last week were correct, and after my two kids tested positive for Covid last week both my wife and I have now tested positive as well. It seems you just can’t escape this stuff lately. Thankfully the two little ones are pretty... | Read more »
TouchArcade Game of the Week: ‘Micro RPG...
I feel like idle games are one of those perfect fits for the mobile platform. Not that they replace more involved gaming experiences when you’re in the mood for that, but they do fit in alongside other types of games just fine as a “go to" when you... | Read more »
‘Phantom Blade: Executioners’ Closed Bet...
Phantom Blade: Executioners is holding a small-scale technical test that lets players get first dibs on the KungFuPunk action RPG. Offered to selected players only, S-Game’s first Closed Beta Test will provide players with limited edition in-game... | Read more »
New ‘Warhammer 40,000: Tacticus’ Video S...
Back in September Snowprint Studios, who you may know from their previous Legend of Solgard or Rivengard, announced that they’d partnered up with Games Workshop to put out a new tactical game in the Warhammer 40,000 universe titled Warhammer 40,000... | Read more »
SwitchArcade Round-Up: ‘Pokemon Legends:...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for January 28th, 2022. We’ve got a bunch of new releases to look at today, with a few big hitters, a few mid-level diversions, and a healthy supply of compost. Since it’s Friday, we... | Read more »
Phantom Blade: Executioners, S-Game...
S-Game has kicked off its first Closed Beta Test for Phantom Blade: Executioners, inviting a selected few to get first dibs on the upcoming KungFuPunk action RPG on mobile. The CBT officially begins this January 28th, and beta testers will receive... | Read more »
‘Infinite Galaxy’ First Anniversary: Cel...
Cultivating a new generation of valiant commanders across 240 countries worldwide, Infinite Galaxy has quenched players’ thirst to explore the vastness of space – and there are only more intergalactic adventures to embark on from here on out. Camel... | Read more »
War and Order: How to brave the cold in...
War and Order's 6th-anniversary celebrations are underway, and all in good time too - this season not only brings about fabulous festivities, but it also lets players experience the harsh winter in an entirely new way. [Read more] | Read more »
‘Hidden Folks+’ Is This Week’s New Apple...
The original Hidden Folks from Adriaan de Jongh is an excellent hidden objects game featuring hand drawn visuals. It is an absolute joy to play, and it has now released on Apple Arcade in the form of Hidden Folks+ () as an App Store great. If you’... | Read more »
Mini Metro’s First Big Update of 2022 Ad...
Last year saw great updates for Dinosaur Polo Club’s Mini Metro ($3.99) which is also available on Apple Arcade as an App Store Great. | Read more »

Price Scanner via MacPrices.net

Apple has clearance 2020 13″ MacBook Airs ava...
Apple has clearance, Certified Refurbished, 2020 13″ Intel-based MacBook Airs in stock today starting at only $719 and up to $370 off original MSRP. Each MacBook features a new outer case, comes with... Read more
The cheapest iPhones for sale today at Apple...
Apple has restocked Apple Certified Refurbished iPhone 8 models starting at only $359. Each refurbished iPhone comes with a fresh external case, standard Apple 1-year warranty, and free shipping.... Read more
14″ MacBook Pro with Apple M1 Max CPU now in...
Looking for a new 14″ MacBook Pro with an Apple M1 Max CPU? Stock is finally trickling into Apple resellers. B&H has Silver 14″ M1 Max MacBook Pros in stock today for $2899 including free 1-2 day... Read more
14″ MacBook Pros with Apple M1 Pro CPUs are i...
Amazon is reporting stock of 14″ MacBook Pros with M1 Pro CPUs today with a $50 discount. Shipping is free, and delivery is available by February 1st for most configurations. Be sure to make your... Read more
Apple has restocked 13″ M1 MacBook Pros for $...
Apple has restocked a full line of 13″ M1 MacBook Pros available Certified Refurbished, starting at only $1099 and up to $230 off original MSRP. These are the cheapest M1 MacBook Pros for sale today... Read more
Apple’s AirPods Max headphones are on sale fo...
Amazon has Silver, Blue, and Space Gray Apple AirPods Max headphones on sale today for $100 off MSRP. Shipping is free, and all models are in stock today. Their price is the lowest currently... Read more
Open a new line of service at Verizon and get...
Verizon is giving away 64GB Apple iPhone 12 minis or your choice of an iPhone 11 to customers who choose one of these phones and open a new line of service. Offer is available online only, and no... Read more
Open-box 13″ M1 MacBook Airs now available st...
QuickShip Electronics has open-box return 13″ M1 MacBook Airs in stock and on sale for $200-$400 off MSRP on their eBay store right now with free express delivery. According to QuickShip, “The item... Read more
Verizon’s 2022 iPad promo: $100-$310 off any...
Verizon has cellular-capable iPads on sale for $100-$310 off MSRP when purchased with an Unlimited service plan. Sale price is applied to your account monthly over a 24 or 30 month period, depending... Read more
Sunday Sale: Apple AirPods are on sale for up...
Amazon has Apple AirPods on sale for $10-$100 off MSRP today, depending on the model. All are in stock today with free delivery: – AirPods Max headphones (Blue): $449 $100 off MSRP – AirPods Max... Read more

Jobs Board

Registered Nurse (RN) Employee Health PSJH -...
…is calling for a Registered Nurse (RN) Employee Health PSJH to our location in Apple Valley, CA.** We are seeking a Registered Nurse (RN) Employee Health PSJH to be Read more
Systems Administrator - Pearson (United State...
…and troubleshoot Windows operating systems (workstation and server), laptop computers, Apple iPads, Chromebooks and printers** + **Administer and troubleshoot all Read more
IT Assistant Level 1- IT Desktop Support Anal...
…providing tier-1 or better IT help desk support in a large Windows and Apple environment * Experience using IT Service Desk Management Software * Knowledge of IT Read more
Human Resources Business Partner PSJH - Provi...
…**is calling a** **Human Resources Business Partner, PSJH** **to our location in Apple Valley, CA.** **Applicants that meet qualifications will receive a text with Read more
Manager Community Health Investment Programs...
…is calling a Manager Community Health Investment Programs PSJH to our location in Apple Valley, CA.** **Qualified candidates will be invited to do a self-paced video Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.