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

WhiteCap 6.7 - Visual plug-in for iTunes...
WhiteCap is a sleek and sophisticated music visualizer and screensaver that features futuristic, wireframe mesh visuals with dynamic backgrounds and colors. WhiteCap contains thousands of visual... Read more
Dropbox 24.4.16 - Cloud backup and synch...
Dropbox is an application that creates a special Finder folder that automatically syncs online and between your computers. It allows you to both backup files and keep them up-to-date between systems... Read more
Amazon Chime 4.2.5645 - Amazon-based com...
Amazon Chime is a communications service that transforms online meetings with a secure, easy-to-use application that you can trust. Amazon Chime works seamlessly across your devices so that you can... Read more
Notion 0.1.8 - A unified workspace for m...
Notion is the unified workspace for modern teams. Features: Integration with Slack Documents Wikis Tasks Note: This application contains in-app and/or external module purchases. Version 0.1.8:... Read more
Google Chrome 58.0.3029.81 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Notion 0.1.8 - A unified workspace for m...
Notion is the unified workspace for modern teams. Features: Integration with Slack Documents Wikis Tasks Note: This application contains in-app and/or external module purchases. Version 0.1.8:... Read more
WhiteCap 6.7 - Visual plug-in for iTunes...
WhiteCap is a sleek and sophisticated music visualizer and screensaver that features futuristic, wireframe mesh visuals with dynamic backgrounds and colors. WhiteCap contains thousands of visual... Read more
Dropbox 24.4.16 - Cloud backup and synch...
Dropbox is an application that creates a special Finder folder that automatically syncs online and between your computers. It allows you to both backup files and keep them up-to-date between systems... Read more
Google Chrome 58.0.3029.81 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Amazon Chime 4.2.5645 - Amazon-based com...
Amazon Chime is a communications service that transforms online meetings with a secure, easy-to-use application that you can trust. Amazon Chime works seamlessly across your devices so that you can... Read more

Latest Forum Discussions

See All

ChordFlow (Music)
ChordFlow 1.0.0 Device: iOS Universal Category: Music Price: $6.99, Version: 1.0.0 (iTunes) Description: ChordFlow is a chord sequencer with a unique 4-track polyphonic arpeggiator, extensive chord library, MIDI out and Ableton Link... | Read more »
The Walking Dead: A New Frontier is out...
The newest season of Telltale Games'The Walking Dead is well underway. After the release of the third episode, "Above the Law" about a month ago, episode four, "Thicker Than Water" is hot and ready for more zombies and gut-wrenching emotional... | Read more »
Best games we played this week
Another week, another new wave of mobile games do dive into. We've dug through the list of apps that came out this week to tell you which apps are worth your sweet time. And while there weren't too many games this week, there were some big ones.... | Read more »
Vignettes (Games)
Vignettes 1.0.1 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.1 (iTunes) Description: Vignettes is a casual but unique exploration game without text or characters, where objects shapeshift as you spin them around... | Read more »
Get Me Outta Here is an 80s retro shoote...
Are you ready to fight some aliens? Because Crescent Moon Games has released the retro shooter Get Me Outta Here on iOS devices today. [Read more] | Read more »
Get a bunch of Apple productivity apps f...
If you're an Apple Mac owner, you're probably aware of the host of Apple productivity apps the company includes in all new Mac purchases. Apps like iMovie, Keynote, and of course, GarageBand. While you used to be able to also buy these apps... | Read more »
Terra Mystica (Games)
Terra Mystica 1.03 Device: iOS Universal Category: Games Price: $9.99, Version: 1.03 (iTunes) Description: Short Summary:≈≈≈≈≈≈≈≈≈≈≈≈≈ | Read more »
Ms. Spell (Games)
Ms. Spell 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Cast spells and battle monsters in this turn based game, that has you delving into ever the changing Dreadwood to retrieve the lost... | Read more »
Invert - A Minimal Puzzle Game (Games)
Invert - A Minimal Puzzle Game 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Invert is a minimalist puzzle game for fans of brain teasers, logic puzzles, and Rubik's Cube fiddlers. | Read more »
Evergrow: Paper Forest (Games)
Evergrow: Paper Forest 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Solve puzzles in the handcrafted forests of Evergrow through the eyes of an imaginative child and his parents. Discover... | Read more »

Price Scanner via MacPrices.net

15-inch 2.7GHz Touch Bar MacBook Pros on sale...
Amazon has 2016 15″ 2.7GHz Apple Touch Bar MacBook Pros in stock today and on sale for $150-$200 off MSRP. Shipping is free: - 15″ 2.7GHz Touch Bar MacBook Pro Space Gray (sku MLH42LL/A): $2599 $200... Read more
Apple now offering Certified Refurbished 13-i...
Apple is now offering Certified Refurbished 2016 13″ Touch Bar MacBook Pros for $270-$300 off original MSRP. An Apple one-year warranty is included with each model, and shipping is free: - 13″ 2.9GHz... Read more
MyGiHealth Digestive Symptom Tracker Version...
My Total Health, Inc. has announced the release of MyGiHealth 2.1, an important update to their digestive symptom tracker developed exclusively for iPhone, iPad and iPod touch devices. MyGiHealth is... Read more
Galaxy S8 Materials Costs Highest by Far Comp...
The new Samsung Galaxy S8 equipped with 64 gigabytes (GB) of NAND flash memory carries a bill of materials (BOM) cost that comes out to US$301.60, much higher than for previous versions of the... Read more
iCarMode 4.0 Car Dashboard App For iOS Integr...
Indie developer Diego Resnik has announced the release of iCarMode 4.0, an update to his productivity app developed for iOS devices. iCarMode has positioned itself as a true car dashboard app,... Read more
How to save $150+ on Apple’s 13-inch 2.0GHz n...
Apple Authorized Reseller B&H Photo has non-Touch Bar 13″ 2.0GHz MacBook Pros on sale for $150 off MSRP for a limited time. Shipping is free, and B&H charges NY sales tax only: - 13″ 2.0GHz... Read more
15-inch 2.2GHz Retina MacBook Pro, Apple refu...
Apple has Certified Refurbished 2015 15″ 2.2GHz Retina MacBook Pros available for $1699. That’s $300 off MSRP, and it’s the lowest price available for a 15″ MacBook Pro. An Apple one-year warranty is... Read more
Apple Certified Refurbished iMacs available f...
Apple has Certified Refurbished 2015 21″ & 27″ iMacs available for up to $350 off MSRP. Apple’s one-year warranty is standard, and shipping is free. The following models are available: - 21″ 3.... Read more
Save up to $160 with Apple refurbished 9-inch...
Apple has Certified Refurbished 9″ and 12″ Apple iPad Pros available for up to $160 off the cost of new iPads. An Apple one-year warranty is included with each model, and shipping is free: - 32GB 9″... Read more
27-inch Apple iMacs on sale for $200 off MSRP
Amazon has 27″ iMacs on sale for $200-$201 off MSRP, each including free shipping: - 27″ 3.3GHz iMac 5K: $2099.99 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $1798 $201 off MSRP - 27″ 3.2GHz/1TB... Read more

Jobs Board

*Apple* Mac Computer Technician - GeekHampto...
…complex computer issues over the phone and in person? GeekHampton, Long Island's Apple Premium Service Provider, is looking for you! Come work with our crew Read more
*Apple* Mobile Master - Best Buy (United Sta...
**493714BR** **Job Title:** Apple Mobile Master **Location Number:** 001024-Weatherford-Store **Job Description:** **What does a Best Buy Apple Mobile Master Read more
Best Buy *Apple* Computing Master - Best Bu...
**496963BR** **Job Title:** Best Buy Apple Computing Master **Location Number:** 001061-Marina-Store **Job Description:** **What does a Best Buy Apple Computing Read more
*Apple* Mobile Master - Best Buy (United Sta...
What does a Best Buy Apple Mobile Master do? At Best Buy, our mission is to leverage the unique talents and passions of our employees to inspire, delight, and enrich Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.