TweetFollow Us on Twitter

May 93 Tips, Tidbits
Volume Number:9
Issue Number:5
Column Tag:Tips & Tidbits

Related Info: Quickdraw Color Quickdraw

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief

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.

Tip of the Month

DebugFStr and DebugFsStr are C macros that enable developers to drop into a low-level debugger, such as MacsBug or TMON, and display the contents of variables in a formatted manner. One example would be to display a long in hex, decimal or octal notation. Better yet, several variables can be shown together on the same message line that is displayed by a debugger. These macros can be used by both Think C and MPW C. Here's how to use 'em (Think C users):

Add the DebugFStr or DebugFsStr macro to your code. To use either macro, include the ANSI (or ANSI-small) and the MacTraps libraries in your project. You must also include the "stdio.h" header file in any source file in which you intend to use these macros. Don't forget to define 'AND' because it is necessary for the syntax of both macros. Macro definitions:

/* 1 */
#define DebugFStr(x,y,z)  sprintf((char *)x,(char *)y,z);      
 \
 c2pstr((char *)x);\
 DebugStr(x);
#define DebugFsStr(x,y) { Str255 a_temporary_string = "\0";    
 \
 sprintf((char *)a_temporary_string,(char *)x,y);\
 c2pstr((char *)a_temporary_string); \
 DebugStr(a_temporary_string);}
#define AND ,

Place DebugFStr or DebugFsStr calls throughout your code in places where you want to drop into your low-level debugger and view the contents of variables. The syntax for using each macro is:

/* 2 */

DebugFStr((char *)resultString,(const char *)formatString,var1 AND var2 
AND varN)
DebugFsStr((const char *)formatString,var1 AND var2 AND   varN)

When using DebugFStr, you must declare and pass a string variable that will be used by the macro to hold the resulting formatted string. This string is a Str255.

FormatString should be a C string constant, enclosed in double-quotes, and can contain formatting information that is identical to the formatting information used for ANSI C's sprintf function.

The variables var1 through varN must be separated by the word AND and the variables must be ordered to correspond directly to the order of the variables defined in the formatString. See the Think C Standard Libraries Reference guide for more information about the sprintf function.

NOTE: The combined length of the formatString and the formatted variables cannot exceed 255 characters, because both macros call DebugStr which requires a Pascal-style string.

NOTE: Notice in the syntax for both macros that neither is delimited by a semicolon.

The only real difference between DebugFStr and DebugFsStr is that the DebugFsStr macro creates a temporary string variable for the formatted string result and DebugFStr requires you to supply a string which will be used by the macro to store the formatted string result.

Following is a function that demonstrates the use of DebugFStr.

/* 3 */

static void MyFunc(short dummy)
{
 long    tempL1 = 1000;
 long    tempL2 = 20;
 Str255  result;

 DebugFStr((char *)result,"In HEX, tempL1 is %#lX and tempL2 is %#lX.",
 tempL1 AND tempL2)
 tempL1 += tempL2;
 DebugFStr((char *)result,"In decimal, tempL1 is %ld.",templL1) }

In the sample function shown above, MyFunc would drop into your debugger two times. On the first drop, your debugger would display the message: In Hex, tempL1 is 0X3E8 and tempL2 is 0X14. On the second drop, your debugger would display the message: In decimal, tempL1 is 1020.

- Jerry Panagrossi

Int'l Biotech via AppleLink

Adding Touch to MPW

If you work much with makefiles, you may sometimes want an easy way to touch a file's modification date. MPW doesn't include a touch command, but it's easy to add one. Type this command into the MPW Worksheet and press Enter:

 Alias Touch "Setfile -m . "

With this alias, you can touch the last modification date of files by entering commands like "touch filename" (updates just the one filename) or "touch .f" (all files in current folder with names ending in ".f").

After you've tried this and decided it's something you'd like as a permanent feature in MPW, copy the above Alias command to your UserStartup file. That way it will be executed each time you launch MPW.

- Lee D. Rimar

Rochester Hills, MI

Subtle QuickDraw Change

If you are writing code that bypasses QuickDraw and writes directly to the screen, and your code is running under 32-bit QuickDraw, only mask off the upper two bits of the screen’s rowbytes value. Previous to 32-bit QuickDraw, the maximum value for rowbytes was $1FFE (bits 13-15 reserved for flags), but with 32-bit QuickDraw, the maximum restriction has been raised to $3FFE (only bits 14 & 15 are reserved).

In most situations, an application that does its own blits to the screen would not encounter any problems masking off bit 13 BUT the time has arrived where bit 13 is being used. For example, a screen of 2048 32-bit pixels requires a rowbytes value of $2000. Applications that mask off bit 13 will produce a rowbytes value of zero, and will wind up drawing only to the top line of the screen.

By the way, if you did overlook this subtle change to the pixmap structure in Inside Mac IV (Chapter 17, page 5), don't feel left out, as I've found popular commercial applications making the same mistake as well.

- John C. Signa

SuperMac Technology

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Posterino 4.4 - Create posters, collages...
Posterino offers enhanced customization and flexibility including a variety of new, stylish templates featuring grids of identical or odd-sized image boxes. You can customize the size and shape of... Read more
Chromium 119.0.6044.0 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. List of changes available here. Version for Apple... Read more
Spotify 1.2.21.1104 - Stream music, crea...
Spotify is a streaming music service that gives you on-demand access to millions of songs. Whether you like driving rock, silky R&B, or grandiose classical music, Spotify's massive catalogue puts... Read more
Tor Browser 12.5.5 - Anonymize Web brows...
Using Tor Browser you can protect yourself against tracking, surveillance, and censorship. Tor was originally designed, implemented, and deployed as a third-generation onion-routing project of the U.... Read more
Malwarebytes 4.21.9.5141 - Adware remova...
Malwarebytes (was AdwareMedic) helps you get your Mac experience back. Malwarebytes scans for and removes code that degrades system performance or attacks your system. Making your Mac once again your... Read more
TinkerTool 9.5 - Expanded preference set...
TinkerTool is an application that gives you access to additional preference settings Apple has built into Mac OS X. This allows to activate hidden features in the operating system and in some of the... Read more
Paragon NTFS 15.11.839 - Provides full r...
Paragon NTFS breaks down the barriers between Windows and macOS. Paragon NTFS effectively solves the communication problems between the Mac system and NTFS. Write, edit, copy, move, delete files on... Read more
Apple Safari 17 - Apple's Web brows...
Apple Safari is Apple's web browser that comes bundled with the most recent macOS. Safari is faster and more energy efficient than other browsers, so sites are more responsive and your notebook... Read more
Firefox 118.0 - Fast, safe Web browser.
Firefox offers a fast, safe Web browsing experience. Browse quickly, securely, and effortlessly. With its industry-leading features, Firefox is the choice of Web development professionals and casual... Read more
ClamXAV 3.6.1 - Virus checker based on C...
ClamXAV is a popular virus checker for OS X. Time to take control ClamXAV keeps threats at bay and puts you firmly in charge of your Mac’s security. Scan a specific file or your entire hard drive.... Read more

Latest Forum Discussions

See All

‘Monster Hunter Now’ October Events Incl...
Niantic and Capcom have just announced this month’s plans for the real world hunting action RPG Monster Hunter Now (Free) for iOS and Android. If you’ve not played it yet, read my launch week review of it here. | Read more »
Listener Emails and the iPhone 15! – The...
In this week’s episode of The TouchArcade Show we finally get to a backlog of emails that have been hanging out in our inbox for, oh, about a month or so. We love getting emails as they always lead to interesting discussion about a variety of topics... | Read more »
TouchArcade Game of the Week: ‘Cypher 00...
This doesn’t happen too often, but occasionally there will be an Apple Arcade game that I adore so much I just have to pick it as the Game of the Week. Well, here we are, and Cypher 007 is one of those games. The big key point here is that Cypher... | Read more »
SwitchArcade Round-Up: ‘EA Sports FC 24’...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for September 29th, 2023. In today’s article, we’ve got a ton of news to go over. Just a lot going on today, I suppose. After that, there are quite a few new releases to look at... | Read more »
‘Storyteller’ Mobile Review – Perfect fo...
I first played Daniel Benmergui’s Storyteller (Free) through its Nintendo Switch and Steam releases. Read my original review of it here. Since then, a lot of friends who played the game enjoyed it, but thought it was overpriced given the short... | Read more »
An Interview with the Legendary Yu Suzuk...
One of the cool things about my job is that every once in a while, I get to talk to the people behind the games. It’s always a pleasure. Well, today we have a really special one for you, dear friends. Mr. Yu Suzuki of Ys Net, the force behind such... | Read more »
New ‘Marvel Snap’ Update Has Balance Adj...
As we wait for the information on the new season to drop, we shall have to content ourselves with looking at the latest update to Marvel Snap (Free). It’s just a balance update, but it makes some very big changes that combined with the arrival of... | Read more »
‘Honkai Star Rail’ Version 1.4 Update Re...
At Sony’s recently-aired presentation, HoYoverse announced the Honkai Star Rail (Free) PS5 release date. Most people speculated that the next major update would arrive alongside the PS5 release. | Read more »
‘Omniheroes’ Major Update “Tide’s Cadenc...
What secrets do the depths of the sea hold? Omniheroes is revealing the mysteries of the deep with its latest “Tide’s Cadence" update, where you can look forward to scoring a free Valkyrie and limited skin among other login rewards like the 2nd... | Read more »
Recruit yourself some run-and-gun royalt...
It is always nice to see the return of a series that has lost a bit of its global staying power, and thanks to Lilith Games' latest collaboration, Warpath will be playing host the the run-and-gun legend that is Metal Slug 3. [Read more] | Read more »

Price Scanner via MacPrices.net

Clearance M1 Max Mac Studio available today a...
Apple has clearance M1 Max Mac Studios available in their Certified Refurbished store for $270 off original MSRP. Each Mac Studio comes with Apple’s one-year warranty, and shipping is free: – Mac... Read more
Apple continues to offer 24-inch iMacs for up...
Apple has a full range of 24-inch M1 iMacs available today in their Certified Refurbished store. Models are available starting at only $1099 and range up to $260 off original MSRP. Each iMac is in... Read more
Final weekend for Apple’s 2023 Back to School...
This is the final weekend for Apple’s Back to School Promotion 2023. It remains active until Monday, October 2nd. Education customers receive a free $150 Apple Gift Card with the purchase of a new... Read more
Apple drops prices on refurbished 13-inch M2...
Apple has dropped prices on standard-configuration 13″ M2 MacBook Pros, Certified Refurbished, to as low as $1099 and ranging up to $230 off MSRP. These are the cheapest 13″ M2 MacBook Pros for sale... Read more
14-inch M2 Max MacBook Pro on sale for $300 o...
B&H Photo has the Space Gray 14″ 30-Core GPU M2 Max MacBook Pro in stock and on sale today for $2799 including free 1-2 day shipping. Their price is $300 off Apple’s MSRP, and it’s the lowest... Read more
Apple is now selling Certified Refurbished M2...
Apple has added a full line of standard-configuration M2 Max and M2 Ultra Mac Studios available in their Certified Refurbished section starting at only $1699 and ranging up to $600 off MSRP. Each Mac... Read more
New sale: 13-inch M2 MacBook Airs starting at...
B&H Photo has 13″ MacBook Airs with M2 CPUs in stock today and on sale for $200 off Apple’s MSRP with prices available starting at only $899. Free 1-2 day delivery is available to most US... Read more
Apple has all 15-inch M2 MacBook Airs in stoc...
Apple has Certified Refurbished 15″ M2 MacBook Airs in stock today starting at only $1099 and ranging up to $230 off MSRP. These are the cheapest M2-powered 15″ MacBook Airs for sale today at Apple.... Read more
In stock: Clearance M1 Ultra Mac Studios for...
Apple has clearance M1 Ultra Mac Studios available in their Certified Refurbished store for $540 off original MSRP. Each Mac Studio comes with Apple’s one-year warranty, and shipping is free: – Mac... Read more
Back on sale: Apple’s M2 Mac minis for $100 o...
B&H Photo has Apple’s M2-powered Mac minis back in stock and on sale today for $100 off MSRP. Free 1-2 day shipping is available for most US addresses: – Mac mini M2/256GB SSD: $499, save $100 –... Read more

Jobs Board

Licensed Dental Hygienist - *Apple* River -...
Park Dental Apple River in Somerset, WI is seeking a compassionate, professional Dental Hygienist to join our team-oriented practice. COMPETITIVE PAY AND SIGN-ON Read more
Sublease Associate Optometrist- *Apple* Val...
Sublease Associate Optometrist- Apple Valley, CA- Target Optical Date: Sep 30, 2023 Brand: Target Optical Location: Apple Valley, CA, US, 92307 **Requisition Read more
*Apple* / Mac Administrator - JAMF - Amentum...
Amentum is seeking an ** Apple / Mac Administrator - JAMF** to provide support with the Apple Ecosystem to include hardware and software to join our team and Read more
Child Care Teacher - Glenda Drive/ *Apple* V...
Child Care Teacher - Glenda Drive/ Apple ValleyTeacher Share by Email Share on LinkedIn Share on Twitter Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.