TweetFollow Us on Twitter

Jul 95 Tips
Volume Number:11
Issue Number:7
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief with special thanks to Steve Sisak

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

TIP OF THE MONTH

Tag Your PowerPC Code
With a Call To _eieio()

When disassembling PowerPC code with CodeWarrior, it isn’t always easy to find the instructions associated with a given set of C statements. Putting in call like Debugger(); can turn a leaf routine into a trunk.

If you use the CodeWarrior intrinsic __eieio(), this is no April Fools joke, it will add the eieio instruction to the stream. Wrap your statements in this and moo. Also, it is fairly benign to accidentally execute.

Chris Sears
sears@netcom.com

Load Extensions After Boot-Time.

This is a cool hack to load Extensions without restarting the Mac. It is the main part of my Freeware utility LoadADrive 1.1, that can load a CD-ROM Driver after the Mac has been started. (You can mount CDs without restarting your Mac if you haven’t switched on your CD-ROM Drive at boot time. Works with System 7.x and even PowerMacs)

I also use this code to debug Extensions. It is anoying to reboot the mac all the time. With this code as the main part of a small application and a good Debugger (I use Jasik’s The Debugger) you can easily check the loading of the Extension.

I tested this code with some other Extensions and it works fine. Of course, this simple version will definitly not work with most Extensions, but you can improve the code to handle special situations.

Maybe someone, who has more free time than I have, will even develop an Uninstaller for Extension. You have to keep track of all patches, allocated memory, changes in Low Memory and so on. (not easy, I know :-)

I just want to demonstrate that it is NOT impossible to load Extensions after boot time.

Dieter Spaar
Friedberg, Germany

Boolean LoadInit(FSSpecPtr extensionFSSpec)
{
    short refNum, ret;
    Handle hdl;

    // Open resource fork

    refNum = FSpOpenResFile(extensionFSSpec, fsCurPerm);
    if(refNum == -1 || ResError() != noErr)
      return FALSE; // Cannot open file

    // Load INIT into System Zone

    SetZone(SystemZone()); // Set zone to system zone
    hdl = Get1IndResource(‘INIT’,1);
    if(hdl == 0) {
      SetZone(ApplicZone());
 CloseResFile(refNum);
 return FALSE; // Cannot load INIT from driver
    }

    HLock(hdl); // lock the resource
    HNoPurge(hdl);

    // Call INIT, we don’t handle the return value ret here

    ret = (*(short(*)())(*hdl))(); // Looks nice, doesn’t it ;-)

     // Is it still a resource ? (don’t unlock if detached)
     // Some INIT’s detach the resource to keep the INIT’s memory block

    if(HGetState(hdl) & 0x20)
    {
        HUnlock(hdl);
        ReleaseResource(hdl);
    }

    SetZone(ApplicZone()); // Back to application zone
    CloseResFile(refNum); // Close the resource file

    // Redraw desktop (Extension may draw startup icon)

    PaintOne(nil, GetGrayRgn());

    return TRUE;
}

...And Thus Spake the App, “Another Bug!”

Have a piece of code that hard to debug with the debugger? Trying to debug a code resource? Usually a quick and dirty solution is to put in a bunch of SysBeep(10) calls to get an idea of where your code is at. However, you can use Apple’s Speech Manager in a similar fashion and get a much better “speak-out”. Here’s how:

Include SpeakIt.c to your project. (The code is included on the disk, and at the usual online places.) Include SpeakIt.h in all the files you want to have any debug statements spoken. In SpeakIt.h is the macro DebugSpeech. Define it like “#define DebugSpeech 1” when you want to use the speech debugger, and comment it out when you don’t want to use it. Within the code you want to debug, call the speech debugger by adding code like this example:

#ifdef DebugSpeech
    CheckSpeechMgr();   // should be called once in your initialization code
#endif

. code ...

#ifdef DebugSpeech
    SpeakIt( “Before while loop.”, true );
#endif

. more code ...

#ifdef DebugSpeech
    SpeakIt( “Made it through the while loop.”, true );
#endif

. and more code ...

#ifdef DebugSpeech
    SpeakIt( “Right before bringing up main window.”, true );
#endif


Cool!

Bill Modesitt
billm@maui.com, http://www.maui.com/~billm

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

VoxSyn (Music)
VoxSyn 1.0 Device: iOS Universal Category: Music Price: $6.99, Version: 1.0 (iTunes) Description: VoxSyn turns your voice into the most flexible vocal sound generator ever. Instantly following even subtle modulations of pitch and... | Read more »
Catch Battleplans on Google Play from Ju...
Real-time strategy title Battleplans is due for release on Google Play on June 30th, following its release for iOS systems last month. With its simple interface and pretty graphics, the crowd-pleaser brings a formerly overlooked genre out for the... | Read more »
iDoyle: The interactive Adventures of Sh...
iDoyle: The interactive Adventures of Sherlock Holmes - A Scandal in Bohemia 1.0 Device: iOS Universal Category: Books Price: $1.99, Version: 1.0 (iTunes) Description: Special Release Price $1.99 (Normally $3.99) | Read more »
Five popular free apps to help you slim...
Thanks to retail and advertising, we're used to thinking one season ahead. Here we are just a week into the summer and we're conditioned to start thinking about the fall. [Read more] | Read more »
How to ride longer and tame more animals...
It's hard to accurately describe Rodeo Stampede to people who haven't seen it yet. It's like if someone took Crossy Roadand Disco Zoo and put them in a blender, yet with a unique game mechanic that's still simple and fun for anyone. [Read more] | Read more »
Teeny Titans - A Teen Titans Go! Figure...
Teeny Titans - A Teen Titans Go! Figure Battling Game 1.0.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0.0 (iTunes) Description: Teeny Titans, GO! Join Robin for a figure battling RPG of epic proportions! TEENY... | Read more »
NinjAwesome: Tips and tricks to be a mor...
Sorry about that headline, but I'm going to go ahead and assume that GameResort would not have named its game NinjAwesome without expecting some of that. It is, in fact, pretty awesome the way it combines an endless runner and old school arcade... | Read more »
Into Mirror (Games)
Into Mirror 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: "Is all that we see or seem, but a dream within a dream?"- Edgar Allan Poe New game by Lemon Jam Studio, the team behind Pursuit... | Read more »
Perchang (Games)
Perchang 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Welcome to Perchang! A test of skill and puzzle solving across 60 stunning levels. | Read more »
BusyCal (Productivity)
BusyCal 3.0 Device: iOS Universal Category: Productivity Price: $4.99, Version: 3.0 (iTunes) Description: BusyCal is a powerful, flexible calendar app for managing busy schedules, events and to dos. | Read more »

Price Scanner via MacPrices.net

15-inch Retina MacBook Pros on sale for $200-...
B&H Photo has 15″ Retina MacBook Pros on sale for up to $210 off MSRP. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina MacBook Pro: $1799.99 $200 off MSRP - 15″ 2.5GHz... Read more
Mac minis on sale for up to $100 off MSRP
B&H Photo has Mac minis on sale for up to $100 off MSRP including free shipping plus NY sales tax only: - 1.4GHz Mac mini: $449 $50 off MSRP - 2.6GHz Mac mini: $649 $50 off MSRP - 2.8GHz Mac mini... Read more
Clearance 2015 13-inch MacBook Airs available...
B&H Photo has clearance 2015 13″ MacBook Airs available for $300 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/4GB/128GB MacBook Air (MJVE2LL/A): $799.... Read more
Apple refurbished Mac minis available for up...
Apple has Certified Refurbished Mac minis available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $80 off MSRP - 2.6GHz Mac... Read more
ABBYY TextGrabber: 1,000,000 Installs in 5 Da...
ABBYY, an international OCR technologies provider, has announced that their image-to-text application TextGrabber, got installed 1,000,000 times in just five days while being featured by the App... Read more
New SkinIt Waterproof Case For iPhone 6
With its impact and waterproof design, the Skinit Waterproof case provides security and protection to guarantee your phone will get you through even the most demanding outdoor conditions. The impact-... Read more
iMacs on sale for up to $150 off MSRP
B&H Photo has 21″ and 27″ iMacs on sale for up to $150 off MSRP including free shipping plus NY sales tax only: - 27″ 3.3GHz iMac 5K: $2181.11 $118 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $1949... Read more
12-inch 1.1GHz Retina MacBooks on sale for $5...
B&H Photo has 2016 12″ 1.1GHz/256GB Retina MacBooks on sale for up to $50 off MSRP. Shipping is free, and B&H charges NY tax only: - 12″ 1.1GHz Space Gray Retina MacBook: $1249 $50 off MSRP... Read more
WWDC Announcements Revisited Still Underwhelm...
I was disappointed that no new MacBook hardware was announced at this year’s all-software World Wide Developer’s Conference. Not even a hint about what’s in the development pipeline. Of course, we... Read more
Twelve South Compass 2 iPad Stand Now Availab...
Twelve South has updated its most popular iPad stand, Compass 2, with the introduction of two new colors — Gold and Rose Gold. These new color options n perfectly complement the new Rose Gold iPad... Read more

Jobs Board

*Apple* Solutions Consultant - APPLE (United...
Job Summary As an Apple Solutions Consultant, you'll be the link between our future customers and our products. You'll showcase your entrepreneurial spirit as you 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
*Apple* Retail - Multiple Positions, Towson...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Professional Learning Specialist - A...
Job Summary The Apple Professional Learning Specialist is a full-time position for one year with Apple in the Phoenix, AZ area. This position requires a high Read more
Executive Director, Big *Apple* Performing...
Big Apple Performing Arts® (BAPA) is looking for a dynamic new Executive Director to lead the organization through its next phase of growth—an exciting opportunity Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.