TweetFollow Us on Twitter

Jan 94 Tips
Volume Number:10
Issue Number:1
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief

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

Tip Of The Month

The 6-byte Code Resource Stub Trick

Many Macintosh programmers who have debugged a CDEF, LDEF, MDEF, or WDEF know “the 6-byte code resource stub trick.” Its been covered in MacTech Magazine, and the wisdom is often passed along online.

To briefly summarize, instead of burying all the code inside a separate code resource where it can't see the structure of the main program (global variables and functions), the programmer creates a 6-byte code stub. In that stub is one MC68000 jump-absolute instruction (as hex in a resource: 4EF9 0000 0000). The programmer replaces the jump destination address (the trailing 32 bits of 0) at runtime with a function address, then informs the relevant Toolbox manager that it should use the resource to define a control, list, or window. (Using this trick with a menu is similar.) Since code is modified, it's always safest to flush the CPU's instruction cache to avoid confusing (read: crashing) it. Refer to the Apple DSC Technical Note "Cache As Cache Can" for the long story.

Now, instead of reading and understanding the tech note and including relevant compensations in your code, you can use a different code resource stub. This stub still includes the function address, but it uses MC68000 instructions to retrieve the address as data, avoiding the code modification problem. In hex: 2F3A 0004 4E75 0000 0000. The 32 bits of zero are again the address you replace with a function address. A disassembly might read:

/* 1 */
MOVE.L  *+$0006,-(A7); push the DC.L onto the stack for RTS
RTS; jump to the definition function
DC.L  0 ; placeholder for addr of defn function

Since the DC.L never actually runs as code, there's no risk of confusing the cache in the CPU. You can use the following C structure declaration to access the address:

/* 2 */
typedef struct
{
 short  push [2], rts;
 void *addr;
}
tCodeStub, *tCodeStubP, **tCodeStubH;

- Pete Gontier

Berkeley, CA

This column is your opportunity to spread the word about little bits of information that you find out about. These tidbits can be programming related or they can be user tips that are particularly useful to programmers.

MacTech Magazine will pay $25 for every tip used, and $50 for the Tip of the Month. Or you can take your award in orders or subscriptions.

To submit a tip, send in a letter to the magazine. E-mail is our preferred method, but feel free to send something via the US Mail. See page two for all addresses. If you do send snail mail, enclose a printed copy and a disk copy of the letter so that it does not have to be retyped.

Precomputing Static value in constants

The compiler is not always smart enough to precompute static values in your code. Static values are values that stay constant throughout the program and cannot be changed. By use of constants you can help to compile precomputed values. This saves time and space in your program.

For example, the compiler will generate code to compute the value of the next expression at runtime. The code will be larger and slower.

  someValue := 5 * 4 + anotherValue + 90;

But, if you use a constant to compute the static value in the above expression, the compiler will precompute the value and place it in your compiled object code. The code will be smaller and faster as a result. Change the above expression like this:

CONST
  kPrecomputedStaticValue = 5 * 4 + 90;

BEGIN
someValue := kPrecomputedStaticValue + 
       anotherValue;
(* Other code *)

- Marek Hajek

Incline Village, Nevada

Toggle Invisibles Part 2

I read Lee Rimar’s tip "Toggle Invisibles in MPW" in November, 1993 Tips & Tidbits column. I found Mr. Rimar's script useful, and I've modified it to avoid making assumptions about the auto-indent and lock-scroll options. The trick is to use "=~" to match a regular expression against the three-character result of Format, and extract the second character into the ®1 variable (see "help patterns" in MPW). (If you're running out of sensible Command-key combinations, you can use SetKey instead, in MPW 3.3, to set up a function key, keypad key, control key, or whatever.)

AddMenu Edit "Toggle Invisibles/¥" 
  '(evaluate "`Format "{active}" -x a`" =~ /?(?)®1?/ ) > Dev:Null ; 
  if {®1}=="i" ; 
    Format "{Active}" -a I ; 
  else ; 
    Format "{Active}" -a i ; 
  end'

- Dave Lyons

Apple Computer, Inc.

International system Tip

Attention all single-byte developers!! Your software is ugly on double-byte machines! (see screen shot) Why? Because any resource that contains an odd number of text characters has an extra character added to the end (the second byte). Here in Japan, quality is very important and having funky looking characters on every menu and dialog box certainly doesn't convey quality. So what to do?

1. Startup your Mac with a double-byte system disk (check any CD-ROMS you have from Apple for a Japanese "Disk Tools" image.) Don't worry if you can't read Japanese because the menu items and short-cut keys are the same.

2. Launch ResEdit and open your application's resources (also notice ResEdit has the extra characters too! A little sloppy for Apple.)

3. Simply open each of you application's resources and find the foreign characters and backspace over them. Be sure to check everything!! Buttons, dialogs, text strings, etc. If it has text, it is possible there is problems.

4. When your finished, launch your application (while still in Japanese mode) and verify that it looks and runs correctly.

5. Restart your system and you're back to where you were! (Warning: depending upon the version you use, your desktop may be rebuilt on restart)

Even if you don't officially sell your software in Japan, most titles are available as gray market imports (even though the package says in big letters "For Sale in The USA Only".) So take a few minutes to improve your reputation for quality!

- Brett Bibby

Tokyo, Japan

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Apple Digital Camera RAW Compatibility 6...
Apple Digital Camera RAW Compatibility update adds RAW image compatibility to Aperture 3 and iPhoto '11. For more information on supported RAW formats, see this page. Version 6.03: This update adds... Read more
OmniGraffle Pro 6.1.4 - Create diagrams,...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
OmniGraffle 6.1.4 - Create diagrams, flo...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
MegaSeg 5.9.5 - Professional MP3 DJ appl...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
MarsEdit 3.6.8 - Quick and convenient bl...
MarsEdit is a blog editor for OS X that makes editing your blog like writing email, with spell-checking, drafts, multiple windows, and even AppleScript support. It works with with most blog services... Read more
BBEdit 11.0.3 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
Microsoft Office Preview 15.8 - Popular...
Welcome to the new and modern Microsoft Office for Mac. You will receive regular updates automatically until the official release in the second half of 2015. With the redesigned Ribbon and your... Read more
Yosemite Cache Cleaner 9.0.5 - Clear cac...
Yosemite Cache Cleaner is an award-winning general purpose tool for OS X. YCC makes system maintenance simple with an easy point-and-click interface to many OS X functions. Novice and expert users... Read more
ExpanDrive 4.3.2 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more
RapidWeaver 6.0.8 - Create template-base...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more

Huge New Content Update to RuPaul’s Drag...
Huge New Content Update to RuPaul’s Drag Race: Dragopolis 2.0! Posted by Jessica Fisher on March 6th, 2015 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Take a First Look at NaturalMotion’s Daw...
NaturalMotion has released a preview of their upcoming title, Dawn of Titans. Dawn of Titans immerses you in a world of fantasy as you build your kingdom, raise an army, and capture territories. The focus on this epic action strategy game was the... | Read more »
GDC 2015 – Warfriends is Something Famil...
GDC 2015 – Warfriends is Something Familiar That’s Also a Little Different Posted by Rob Rich on March 6th, 2015 [ permalink ] About Fun‘s upcoming Warfriends is quite the interesting hybrid. | Read more »
GDC 2015 – This is Why Everybody’s Talki...
GDC 2015 – This is Why Everybody’s Talking About Downwell Posted by Rob Rich on March 6th, 2015 [ permalink ] So Downwell. Holy crap. | Read more »
It’s Guild vs. Guild in Summoners War’s...
It’s Guild vs. Guild in Summoners War’s Newest Update! Posted by Jessica Fisher on March 6th, 2015 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
GDC 2015 – Toast USA’s Line-Up is Lookin...
GDC 2015 – Toast USA’s Line-Up is Looking Pretty Darn Cool Posted by Rob Rich on March 6th, 2015 [ permalink ] Guardian Stone Guardian Stone has been in the works for quite some time, but it’s finally getting close to a release. | Read more »
Heavenstrike Rivals: Beginners’s Tips, T...
Dig this: Would you like to know what we thought of this steampunk strategy game? Check out our Heavenstrike Rivals review! The Basics | Read more »
Bored? MyLeisure FreeTime Maximizer Will...
Bored? MyLeisure FreeTime Maximizer Will Take Care of That! Posted by Jessica Fisher on March 5th, 2015 [ permalink ] iPhone App - Designed for the iPhone, compatible with the iPad | Read more »
New Publisher Allstar Games Heads West w...
Allstar Games has announced its first mobile title designed for western audiences, Allstar Heroes. The game will be a massive online battle arena (MOBA) that offers dozens of heroes for you to collect and pit against your opponents. As each hero has... | Read more »
RAD Boarding Review
RAD Boarding Review By Jennifer Allen on March 5th, 2015 Our Rating: :: NEARLY RADUniversal App - Designed for iPhone and iPad RAD Boarding isn’t quite one of the greats, but it has potential.   | Read more »

Price Scanner via MacPrices.net

iOS 8.2 Coming Monday; Official Changelog An...
BGR’s Jonathan Geller reports that Apple will release an iOS 8.2 Final on Monday, presumably in conjunction with its scheduled “Spring Forward” special event. Geller also reports that he’s been... Read more
iBusiness Technologies Announces iReplenish t...
iBusiness Technologies, partnered nationally with Apple to provide businesses with iPad-based MobiliForms, has announced that for every system purchased it will plant 50 trees through The Nature... Read more
EnerPlex Surfr Battery & Solar Case for i...
Ascent Solar Technologies, Inc. a developer of state-of-the-art, flexible thin-film photovoltaic modules, integrated into the company’s EnerPlex series of consumer products, has announced immediate... Read more
16GB iPad mini 3 on sale for $349, save $50
 Walmart has the 16GB iPad mini 3 WiFi on sale on their online store for $349.99 including free shipping or free local store pickup. Their price is $50 off MSRP, and it’s the lowest price available... Read more
Save up to 15% with Apple refurbished Time Ca...
The Apple Store has certified refurbished Time Capsules available for up to $60 off MSRP. Apple’s one-year warranty is included with each Time Capsule, and shipping is free: - 2TB Time Capsule: $255... Read more
Save up to $105 on AppleCare Protection Plans
B&H Photo has 3-Year AppleCare Warranties on sale for up to $105 off MSRP including free shipping plus NY sales tax only: - Mac Laptops 15″ and Above: $244 $105 off MSRP - Mac Laptops 13″ and... Read more
Apple restocks refurbished 15-inch Retina Mac...
The Apple Store has restocked Apple Certified Refurbished 2014 15″ Retina MacBook Pros, available for up to $400 off the cost of new models. An Apple one-year warranty is included with each model,... Read more
Roundup of MacBook Air sale prices, models up...
B&H Photo has MacBook Airs on sale for up to $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 128GB MacBook Air: $799 100 off MSRP - 11″ 256GB MacBook Air: $999 $100... Read more
New Firstrade Mobile App Enables On-The-Go Tr...
Firstrade Securities Inc. has announced its new mobile app, which gives investors immediate access to the company’s trading platform on all mobile devices. The app was developed in-house and was... Read more
Sonnet Introduces USB 3.0 + eSATA Thunderbolt...
Sonnet has announced the launch of its new USB 3.0 + eSATA Thunderbolt Adapter for easy connectivity to USB 3.0 devices and eSATA storage, and USB 3.0 + Gigabit Ethernet Thunderbolt Adapter for easy... Read more

Jobs Board

*Apple* Solutions Consultant- Retail Sales -...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
*Apple* Solutions Consultant - Retail Sales...
**Job Summary** As an Apple Solutions Consultant (ASC) you are the link between our customers and our products. Your role is to drive the Apple business in a retail 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
*Apple* Solutions Consultant - Retail Sales...
**Job Summary** As an Apple Solutions Consultant (ASC) you are the link between our customers and our products. Your role is to drive the Apple business in a retail Read more
Position Opening at *Apple* - Apple (United...
…Summary** As a Specialist, you help create the energy and excitement around Apple products, providing the right solutions and getting products into customers' hands. You Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.