TweetFollow Us on Twitter

Apr 94 Tips
Volume Number:10
Issue Number:4
Column Tag:Tips & Tidbits

Tips & Tidbits

Edited by Scott Boyd, Editor

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

Tip Of The Month

MPW C Navigation Time Saver

MPW has a nice feature for C programmers: Using the tool CMarker, you can make a list of marks for all the functions in a source file.

Unfortunately, when you open the Mark menu, you can wind up with something unusable. For example, the list could be so long that it takes too much time to find what you’re looking for. Moreover, you are often looking for a function because you are in a piece of code in which you see it being called. It’s right there in front of you. It would be nice to be able to use that piece of context to get you to the function itself.

The following MPW Shell statement sets up a function key which jumps to a function when you highlight its name and press control-enter (or any other key you wish).


/* 1 */
setkey control-enter 'find `catenate "{Active}".§`"{Active}"'

Be sure to get all of the quotes right. MPW cares about the different quotes. Reading from left-to-right, the quotes are straight-, back-, double-, double-, back-, double-, double-, and single-quotes. The § character is option-6.

- Manuel Carlos Alcoba

Informacion, Integracion, Inteligencia

Madrid, Spain

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.

INLINE ASSEMBLY IN PASCAL

Knowing how to write inline assembly within your pascal code can sometimes save you time and trouble. For example, I use an Inline routine that returns the current stack address for debugging purposes. The routine looks like this:

 
/* 2 */
INTERFACE
  FUNCTION GetStackTop: LongInt; INLINE
   $2E8F;
My code calls it just as if it were a regular function:
VAR
 stackAddress: LongInt;
...
stackAddress := GetStackTop;

When used properly, Inline assembly provides considerable speed improvements and allows you to enhance your Pascal code in ways not possible with straight Pascal.

Define your inline routines in the INTERFACE part of a file. In my example, the hexadecimal number $2E8F represents the instruction MOVE.L A7,(A7). The compiler places this instruction directly into the code. This reduces the number of instructions needed to write and compile this routine in assembly language and also avoids calling overhead for a function. No calling overhead simply means no JSR instructions are generated in the code. When I was learning how to write inline assembly, the biggest obstacle was lack of documentation on how to obtain the hexadecimal format (e.g. $2E8F) of assembly language instructions. You can laboriously try to compose the hexadecimal instruction from some 68000 assembly books, but this usually takes several minutes, is error prone, and requires that you know exactly what you are doing. There is a much easier way to obtain the hexadecimal format of any assembly language instruction, provided you have MPW assembler. This is what you need to do:

Suppose you want to find the hexadecimal format of the MOVE.L A7,(A7) instruction.

1) In MPW, create a new file called Example.a and enter the text:

/* 3 */
RoutineName PROC
 MOVE.L A7,(A7)
 END

2) Create a ‘.o’ file with the MPW ASM tool. In this case I call the file Example.a and the ASM tool creates an Example.a.o file:

/* 4 */
 Asm Example.a

3) Now disassemble the Example.a.o file with the dumpObj MPW tool. The dumpObj takes whatever is inside a compiled file and disassembles it back into assembly language instructions. In this case it disassembles the file Example.a.o into a file called Example.o.a:

/* 5 */
dumpobj 'Example.a.o' > 'Example.o.a'

4) The disassembled file contains the line

/* 6 */
00000000: 2E8F           '..'              MOVE.L     A7,(A7)

The second number on that line, “i.e. 2E8F”, is the hexadecimal format of the assembly instruction.

From now on, anytime you need a hexadecimal format of an instruction, just add the instruction to Example.a file and execute the ASM and dumpObj MPW tools. After you do this a couple of times you will realize this is a simple repetitious process. This usually takes less than a minute and is much easier and quicker than finding the instruction from a book.

- Marek Hajek

Champaign, Illinois

Another hex-for-opcode trick

Finding the hex for an instruction can be useful in a number of situations. One situation I’ve found myself in is sitting in Macsbug on a machine and needing to change a single instruction. For example, suppose Igot a branch condition backwards, and want to change the sense of the conditional branch from BLE to BGT. I’d like to change the instruction with a SM (set memory) Macsbug command, but first I have to figure out the value to set. I could guess (don’t laugh, I’ve done it before, and even got it right after just a few guesses on a couple of occasions), but a better way is to let someone do all the guessing (or table lookups) for me. The fastest tool I’ve found is TMONPro on some handy nearby machine. Here’s how:

1) Open up an assembly window. Set its address to PlayMem. That’s a chunk of memory that TMON sets aside when it loads. It’s there for you to play with.

2) Select the first line. It probably reads something like ORI.B #$00,D0. Regardless, select the whole line.

3) Now type in the instruction you want. It replaces the selection. Now press return or enter.

4) TMONPro assembles your instruction right then and there.

5) Open a memory window and point it at PlayMem. An easy way to do that is to command-click on PlayMem’s address over on the left-hand side of the assembly window. The memory window now shows the hex values for the instruction you just typed in.

Of course, you might also just use it on the machine you’re debugging. That’s even faster because now you can simply type over the line of assembly, press enter, and the code changes in place.

- Ned Flanders

Springfield

Playing a sound asynchronously and continuously

When allocating your channel, pass a callbackproc. When playing the sound using bufferCmd, immediately play a callbackCmd as well. Your callback will be called when there is about 50ms of sound left to play, and can queue a new bufferCmd in the same channel (even though it's at interrupt time).

- Jon W{tte

Sweden

[When asked about the { in his name, Jon replied :

“For reference, it's option-u a, or a-umlaut - ä. However, I'm trying to push the brace as the next character to be included in the Swedish naming character set :-)” ]

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Herald 5.0.2 - Notification plugin for M...
Note: Versions 2.1.3 (for OS X 10.7), 3.0.6 (for OS X 10.8), and 4.0.8 (for OS X 10.9) are no longer supported by the developer. Herald is a notification plugin for Mail.app, Apple's Mac OS X email... Read more
DEVONthink Pro 2.8.3 - Knowledge base, i...
Save 10% with our exclusive coupon code: MACUPDATE10 DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research... Read more
Boom 2 1.0.1 - System-wide pro audio app...
Boom 2 is a system-wide volume booster and equalizer app that is designed especially for OS X 10.10 Yosemite. It comes with a smart interface, self-calibrates itself according to your Mac, offers... Read more
Apple Security Update 2015-001 - For OS...
Apple Security Update 2015-001 is recommended for all users and improves the security of OS X. For detailed information about the security content of this update, please visit: http://support.apple.... Read more
Drive Genius 4.0.1 - Powerful system uti...
Drive Genius 4 gives you faster performance from your Mac while also protecting it. The award-winning and improved DrivePulse feature alerts you to hard drive issues before they become major problems... Read more
Yosemite Cache Cleaner 9.0.3 - 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
xScope 4.1.1 - Onscreen graphic measurem...
xScope is powerful set of tools that are ideal for measuring, inspecting, and testing on-screen graphics and layouts. Its tools float above your desktop windows and can be accessed via a toolbar,... Read more
OS X Yosemite 10.10.2 - Apple's lat...
OS X Yosemite is Apple's newest operating system for Mac. An elegant design that feels entirely fresh, yet inherently familiar. The apps you use every day, enhanced with new features. And a... Read more
Apple iOS 8.1.3 - The latest version of...
The latest version of iOS can be downloaded through iTunes. Apple iOS 8 comes with big updates to apps you use every day, like Messages and Photos. A whole new way to share content with your family.... Read more
SpamSieve 2.9.19 - Robust spam filter fo...
SpamSieve is a robust spam filter for major email clients that uses powerful Bayesian spam filtering. SpamSieve understands what your spam looks like in order to block it all, but also learns what... Read more

Storm & Skye – Magical Adventure Sto...
Storm & Skye – Magical Adventure Story For Kids Review By Amy Solomon on January 28th, 2015 Our Rating: iPhone App - Designed for the iPhone, compatible with the iPad The first book in the Storm & Skye series includes... | Read more »
New WOTA: U-Boat Compass ‘Wets’ Your App...
New WOTA: U-Boat Compass ‘Wets’ Your Appetite for WOTA: Wolves of the Atlantic. Posted by Jessica Fisher on January 27th, 2015 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Warship Solitaire Review
Warship Solitaire Review By Nadia Oxford on January 27th, 2015 Our Rating: :: A WAR OF NUMBERSUniversal App - Designed for iPhone and iPad Warship Solitaire might lack frills and looks, but it offers some thought provoking... | Read more »
Keep Track of Your Hectic Work Schedule...
Keep Track of Your Hectic Work Schedule With Shifts Posted by Jessica Fisher on January 27th, 2015 [ permalink ] iPhone App - Designed for the iPhone, compatible with the iPad | Read more »
All Star Quarterback Review
All Star Quarterback Review By Campbell Bird on January 27th, 2015 Our Rating: :: PLAY YOUR PARTUniversal App - Designed for iPhone and iPad Train your way to the Super Bowl in this free-to-play sports management game.   | Read more »
Sentinel 4: Dark Star Adds New Campaign...
Sentinel 4: Dark Star Adds New Campaign and More Posted by Ellis Spice on January 27th, 2015 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Wheel & Deal Review
Wheel & Deal Review By Tre Lawrence on January 27th, 2015 Our Rating: :: SIMPLE FUNUniversal App - Designed for iPhone and iPad A simple arcade shooter that has a retro feel.   | Read more »
Join the NAVY in a Big New Update for WW...
Join the NAVY in a Big New Update for WW2: Sandbox. Strategy & Tactics Posted by Jessica Fisher on January 27th, 2015 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Earthworm Alchemy Review
Earthworm Alchemy Review By Campbell Bird on January 27th, 2015 Our Rating: :: FEED THE WORMUniversal App - Designed for iPhone and iPad Feed this funny looking worm and dodge bombs in this charming, free-to-play arcade game.   | Read more »
Graphic Novel App netwars – The Butterfl...
Graphic Novel App netwars – The Butterfly Attack has Received Some New Episodes Posted by Jessica Fisher on January 27th, 2015 [ permalink ] | Read more »

Price Scanner via MacPrices.net

New Good Management Suite Simplifies Enterpri...
Good Technology has announced the availability of the Good Management Suite, a comprehensive cross-platform solution for organizations getting started with mobile business initiatives. Built on the... Read more
15-inch 2.0GHz Retina MacBook Pro (refurbishe...
The Apple Store has Apple Certified Refurbished previous-generation 15″ 2.0GHz Retina MacBook Pros available for $1489 including free shipping plus Apple’s standard one-year warranty. Their price is... Read more
15-inch 2.5GHz Retina MacBook Pro on sale for...
Amazon has the 15″ 2.5GHz Retina MacBook Pro on sale for $2319.99 including free shipping. Their price is $180 off MSRP, and it’s the lowest price available for this model from any reseller. Read more
iPad Turns Five – The ”Book Mystique
Five years ago this week, the late Steve Jobs took the stage at an Apple special press event to unveil the first Apple iPad — a slab-shaped, hand-holdable device that was to shake the personal... Read more
Sale! 15-inch Retina MacBook Pros for up to $...
B&H Photo has the new 2014 15″ Retina MacBook Pros on sale for $150 off MSRP for a limited time. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $1889.99... Read more
Apple refurbished Mac minis for up to $150 of...
The Apple Store has restocked Apple 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... Read more
Apple Releases New Tranche Of OS Updates For...
Apple has released incremental bugfix and security updates for its most recent Mac and iOS versions. OS X Yosemite 10.10.2 Update Apple says this update includes the following improvements: Resolves... Read more
Samsung To Be Main Supplier Of A9 Chips For i...
Korea’s Maeil Business Newspaper reports that Samsung has beat out its chipmaking rivals, Taiwan’s Qualcomm and TSMC, as supplier of chipsets for the next generations of both its own Galaxy S6 and... Read more
Save up to $340 on iMacs with Apple Certified...
The Apple Store has Apple Certified Refurbished iMacs available for up to $340 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free. These are the best prices on... Read more
AppleCare Protection Plans on sale for up to...
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

Jobs Board

*Apple* Systems Engineer - Pre Sales, Educat...
…is responsible for proactively providing technical expertise to drive sales of Apple solutions into assigned accounts. The SE architects, validates, and assists in Read more
*Apple* Solutions Consultant - Retail Sales...
As an ambassador of the Apple brand, the ASC is accountable for driving sales performance by: Connecting with customers. Discovering customers' needs and values. Showing Read more
*Apple* Solutions Consultant - Retail Sales...
As an ambassador of the Apple brand, the ASC is accountable for driving sales performance by: Connecting with customers. Discovering customers' needs and values. Showing Read more
*Apple* Tree Children's Center is hirin...
Apple Tree Learning Center is Hiring Preschool Teachers! Phoenix Childrens Academy is a national leader in the early childhood education industry and we are currently 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
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.