TweetFollow Us on Twitter

AppleEvents 101 Bug
Volume Number:9
Issue Number:7
Column Tag:Article Rebuttal

Related Info: Notification Mgr Event Manager Apple Event Mgr

Apple Events 101 Bug

Bit Mask vs. Bit Number

By John Theisen, Flagstaff, Arizona

About the author

John Theisen, Macintosh Developer

1000 W. Forest Meadows #262, Flagstaff, AZ 86001 USA INTERNET: jjt@naucse.cse.nau.edu

Dear Sirs,

This letter is in response to the writer of AppleEvents 101 in your May 1993 Issue of MacTech Magazine.

While debugging the code that I had entered I came across a few problems with Dr. Kane's InitMac() routine. His painstaking use of the Gestalt Manager to determine the environment that the application is functioning in was done without a flaw, UNTIL he tests for the PPC attributes.

Dr Kane's code reads as follows:

 if (BitTest(&response, gestaltPPCSupportsRealTime) != 0)
 theErr = PPCInit();
 // if this bit is not set, we need to initialize

OK this looks to be correct given the previous calls to Gestalt() and then the testing of the attributes. Apple Inside Macintosh, Volume VI, Using the PPC Toolbox (page 7-10) specifical states that testing for the gestaltPPCSupportsRealTime should be conducted in the following manner:

{1}

 err := Gestalt(gestaltPPCToolboxAttr, PPCAttributes);
 IF err = noErr
 THEN {PPC Toolbox is present}
 BEGIN
 IF BAND(PPCAttributes, gestaltPPCSupportsRealTime)=0
 THEN
 BEGIN
 {INIT PPC Toolbox HERE}
 END
 END

This shows that in order to test for the gestaltPPCSupportsRealTime we are using a Binary AND ... this is *NOT* the same as a BitTest operation.

I have substituted the following code which matches more closely with Apple's version:

/* 2 */

 if ((response & gestaltPPCSupportsRealTime) == 0)
 theErr = PPCInit();
 // if this bit is not set, we need to initialize

 if ((response & gestaltPPCSupportsOutGoing) == 0);
 // tell the user to turn on AppleTalk
 
 if ((response & gestaltPPCSupportsIncoming) == 0);
 // tell the user to activate file sharing or Appletalk

For clarification of the BTST operation in the BitTest() procedure provided by Dr. 
Kane I am quoting the Motorola M68000 Programmer's Reference Manual

 "BTST  Test a Bit
            
A bit in the destination operand is tested, and the state of the specified bit is reflected 
in the Z condition code.  If a data register is the destination, then the bit number is modulo 
32, allowing bit manipulation on all bits in a data register..."
The PPC constants are defined as:

/* 3 */

gestaltPPCToolboxPresent = 0x0000
/* PPC Toolbox is present. Requires PPCInit to be called */

gestaltPPCSupportsRealTime = 0x1000
/* PPC Supports real-time delivery */

gestaltPPCSupportsIncoming = 0x0001
/* PPC will deny incoming network requests */

gestaltPPCSupportsOutGoing = 0x0002
/* PPC will deny outgoing network requests */

[taken from GestaltEqu.h Copyright Apple Computer, Inc. 1988-1990]

In the code originally supplied, we would be testing BIT 4096 (and since 4096 MOD 32 = 0, the code would test BIT 0). This happens to be the bit indicating that the PPC Toolbox is present.

The cases for gestaltPPCSupportsIncoming and gestaltPPCSupportsOutGoing read much the same as the above case for gestaltPPCSupportsRealTime. If used with the BitTest() operation gestaltPPCSupportsIncoming will test BIT 1 instead of BIT 0 (0x0001 in binary has BIT 0 set not BIT 1) and gestaltPPCSupportsOutGoing is also off by 1, testing BIT 2 instead of BIT 1.

When testing for these PPC toolbox attributes, Apple requires that you use these as bit masks and NOT bit numbers. Although your code may check out fine in the testing phase, these lurking bugs will come back to haunt you.

I hope that some other Developers can find this information useful. As a side note, users who wish to notify the user of the AE101 application that they need to turn on Appletalk in the Chooser should notice that the initialization of the Dialog Manager as well as a few other key managers should take place before they try to place any dialogs on the screen.

John Theisen

Macintosh Developer

NOTE Published in Editorial, August 1993:

Oops!

Jeff Kane wrote one of our most successful articles - AppleEvents 101 in the May ‘93 issue. We printed a rebuttal to his article that turned out not to be his bug. Evidently, Apple changed the header files and as a result, the definition of the gestaltPPC constants. Sorry Jeff.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

The beginner's guide to Warbits
Warbits is a turn-based strategy that's clearly inspired by Nintendo's Advance Wars series. Since turn-based strategy games can be kind of tricky to dive into, see below for a few tips to help you in the beginning. Positioning is crucial [Read... | Read more »
How to upgrade your character in Spellsp...
So you’ve mastered the basics of Spellspire. By which I mean you’ve realised it’s all about spelling things in a spire. What next? Well you’re going to need to figure out how to toughen up your character. It’s all well and good being able to spell... | Read more »
5 slither.io mash-ups we'd love to...
If there's one thing that slither.io has proved, it's that the addictive gameplay of Agar.io can be transplanted onto basically anything and it will still be good fun. It wouldn't be surprising if we saw other developers jumping on the bandwagon,... | Read more »
How to navigate the terrain in Sky Charm...
Sky Charms is a whimsical match-'em up adventure that uses creative level design to really ramp up the difficulty. [Read more] | Read more »
Victorious Knight (Games)
Victorious Knight 1.3 Device: iOS Universal Category: Games Price: $1.99, Version: 1.3 (iTunes) Description: New challenges awaits you! Experience fresh RPG experience with a unique combat mechanic, packed with high quality 3D... | Read more »
Agent Gumball - Roguelike Spy Game (Gam...
Agent Gumball - Roguelike Spy Game 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Someone’s been spying on Gumball. What the what?! Two can play at that game! GO UNDERCOVERSneak past enemy... | Read more »
Runaway Toad (Games)
Runaway Toad 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: It ain’t easy bein’ green! Tap, hold, and swipe to help Toad hop to safety in this gorgeous new action game from the creators of... | Read more »
PsyCard (Games)
PsyCard 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: From the makers och Card City Nights, Progress To 100 and Ittle Dew PSYCARD is a minesweeper-like game set in a cozy cyberpunk... | Read more »
Sago Mini Robot Party (Education)
Sago Mini Robot Party 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: -- Children's Technology Review Editor's Choice -- | Read more »
Egz – The Origin of the Universe (Games...
Egz – The Origin of the Universe 1.0.2 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0.2 (iTunes) Description: ►►► Special offer until 2nd may : get the game at 2.99€ instead of 3.99€ ! ◄◄◄ Egz is a mesmerizing mix... | Read more »

Price Scanner via MacPrices.net

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
13-inch Retina MacBook Pros on sale for up to...
B&H Photo has 13″ Retina MacBook Pros on sale for $130-$200 off MSRP. Shipping is free, and B&H charges NY tax only: - 13″ 2.7GHz/128GB Retina MacBook Pro: $1169 $130 off MSRP - 13″ 2.7GHz/... Read more
Apple price trackers, updated continuously
Scan our Apple Price Trackers for the latest information on sales, bundles, and availability on systems from Apple’s authorized internet/catalog resellers. We update the trackers continuously: - 15″... Read more
SanDisk Half-Terabyte SSD Optimized for Every...
SanDisk Corporation has announced the SanDisk Z410 SSD, a cost-competitive, half-terabyte solid state drive (SSD) that enables manufacturers to design for a broad range of desktop PCs and laptops.... Read more
Churchill Downs Racetrack Selects VenueNext t...
Churchill Downs Racetrack has announced an agreement with VenueNext to implement its technology platform for the start of Churchill Downs 2016 Spring Meet, which includes the 142nd running of the... Read more
Record 700 Million Pounds of CE Recycled in 2...
The Consumer Technology Association (CTA) reports that a record-setting 700 million pounds of consumer electronics (CE) have been recycled under the eCycling Leadership Initiative (ELI). According to... Read more
Price drops on clearance 12-inch Retina MacBo...
B&H Photo has dropped prices on leftover 2015 12″ Retina MacBooks with models now available starting at $999. Shipping is free, and B&H charges NY tax only: - 12″ 1.1GHz Gray Retina MacBook... Read more
15-inch Retina MacBook Pros available for $20...
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 $200 off MSRP - 15″ 2.5GHz Retina... Read more
Target offers Apple Watch Sport for $50 off M...
Target has Apple Watch Sports on sale for $50 off MSRP for a limited time. Choose free shipping or free local store pickup (if available). Sale prices for online orders only, in-store prices may vary... Read more
Apple restocks Certified Refurbished Mac mini...
Apple has restocked Certified Refurbished 2014 Mac minis, with models available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $... Read more

Jobs Board

*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
Restaurant Manager (Neighborhood Captain) - A...
…in every aspect of daily operation. WHY YOU'LL LIKE IT: You'll be the Big Apple . You'll solve problems. You'll get to show your ability to handle the stress and Read more
Restaurant Manager (Neighborhood Captain) - A...
…in every aspect of daily operation. WHY YOU'LL LIKE IT: You'll be the Big Apple . You'll solve problems. You'll get to show your ability to handle the stress and Read more
Simply Mac *Apple* Specialist- Service Repa...
Simply Mac is the largest premier retailer of Apple products in the nation. In order to support our growing customer base, we are currently looking for a driven Read more
*Apple* Retail - Multiple Positions - Apple,...
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
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.