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

BusyContacts 1.6.4 - Fast, efficient con...
BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient. It brings to contact management the same power, flexibility, and sharing... Read more
Steam 4.0 - Multiplayer and communicatio...
Steam is a digital distribution, digital rights management, multiplayer and communications platform developed by Valve Corporation. It is used to distribute a large number of games and related media... Read more
OmniGraffle Pro 7.19.3 - Create diagrams...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
OmniGraffle 7.19.3 - Create diagrams, fl...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
Hopper Disassembler 5.3.3- - Binary disa...
Hopper Disassembler is a binary disassembler, decompiler, and debugger for 32- and 64-bit executables. It will let you disassemble any binary you want, and provide you all the information about its... Read more
calibre 5.35.0 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Sound Studio 4.10.0 - Robust audio recor...
Sound Studio lets you easily record and professionally edit audio on your Mac. Easily rip vinyls and digitize cassette tapes, or record lectures and voice memos. Prepare for live shows with live... Read more
Sparkle Pro 4.0 - Visual website creator...
Sparkle Pro will change your mind if you thought building websites wasn't for you. Sparkle is the intuitive site builder that lets you create sites for your online portfolio, team or band pages, or... Read more
Dropbox 140.4.1951 - Cloud backup and sy...
Dropbox for Mac is a file hosting service that provides cloud storage, file synchronization, personal cloud, and client software. It is a modern workspace that allows you to get to all of your files... Read more
FotoMagico 6.0.5 - Powerful slideshow cr...
FotoMagico lets you create professional slideshows from your photos and music with just a few, simple mouse clicks. It sports a very clean and intuitive yet powerful user interface. High image... Read more

Latest Forum Discussions

See All

Best iPhone Game Updates: ‘Garena Free F...
Hello everyone, and welcome to the week! It’s time once again for our look back at the noteworthy updates of the last seven days. I got busted last week for not including the obligatory free-to-play matching puzzle game update of the week, and my... | Read more »
‘Horizon Chase’ China Spirit DLC Release...
Following the release of the excellent reveal of the Horizon Chase Senna Forever expansion, the game will be getting a new DLC on mobile platforms today. Today, the Horizon Chase China Spirit DLC pack will release on iOS and Android bringing in 9... | Read more »
‘PUZZLED’ from SNK and Hamster Is Out No...
Following ZED BLADE ACA NeoGeo earlier this month, SNK has brought over another game in the ACA NeoGeo series to both iOS and Android in the form of PUZZLED. SNK and Hamster originally brought the series to mobile with Samurai Shodown IV, Alpha... | Read more »
A House Full of Covid – The TouchArcade...
It’s been a rough week as both of our young children tested positive for Covid, and since recording this early on Friday my wife has tested positive now too. Thankfully the kids seemed to recover fairly quickly and are mostly back to normal, and I... | Read more »
TouchArcade Game of the Week: ‘Krispee S...
Krispee Street is a new hidden object game from Frosty Pop that is based on their popular and almost painfully sweet webcomic Krispee. This is one of the latest titles to be added to the Netflix Games catalog, which means you’ll need to log into... | Read more »
SwitchArcade Round-Up: ‘Escape Lala’, ‘B...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for January 21st, 2022. In today’s article, we’ve got a lot of new releases. A lot. There were eight on the schedule when I went to bed last night. There were twenty-four when I woke up... | Read more »
Beta Testers Needed for Huge Version 2.0...
Ya’ll remember Dungeon Raid, right? The phenomenal matching RPG hybrid that launched on mobile more than a decade ago, but was more or less abandoned by its developer only to die a slow death on the App Store before the 32-bit Appocalypse finally... | Read more »
‘Ark Legends’ Gives Players a Chance to...
It’s Airpods and Amazon gift cards galore as Melting Games opens pre-registration for Ark Legends. The upcoming mobile RPG is giving away tons of in-game goodies such as gold, energy, iron core, hero summon chest and rare iron core to players who... | Read more »
‘Nickelodeon Extreme Tennis’ Out Now on...
Nickelodeon Extreme Tennis () from Old Skull Games and Nickelodeon is this week’s new Apple Arcade release. Nickelodeon Extreme Tennis features characters from old and new Nickelodeon shows including SpongeBob, TMNT, and many more. The tennis game... | Read more »
SwitchArcade Round-Up: ‘RPGolf Legends’,...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for January 20th, 2022. In today’s article, we’ve got a massive amount of new releases to check out. We’ve got summaries of all of them, from heaven to hell. We also have the lists of... | Read more »

Price Scanner via MacPrices.net

Verizon’s 2022 iPad promo: $100-$310 off any...
Verizon has cellular-capable iPads on sale for $100-$310 off MSRP when purchased with an Unlimited service plan. Sale price is applied to your account monthly over a 24 or 30 month period, depending... Read more
Sunday Sale: Apple AirPods are on sale for up...
Amazon has Apple AirPods on sale for $10-$100 off MSRP today, depending on the model. All are in stock today with free delivery: – AirPods Max headphones (Blue): $449 $100 off MSRP – AirPods Max... Read more
These Apple resellers are offering 13″ M1 Mac...
Apple resellers are offering discounts on 13″ MacBook Pros with M1 Apple Silicon processors ranging up to $150 off MSRP. Here’s where to get one today: (1): Apple’s 13″ MacBook Pros with M1 Apple... Read more
Amazon lowers prices on select 13″ M1 MacBook...
Amazon has select Apple 13″ M1 MacBook Airs on sale for $150 off MSRP this weekend, starting at only $849. Their prices are the lowest available for new MacBook Airs today. Stock may come and go, so... Read more
Apple has 13″ M1 MacBook Airs back in stock s...
Apple has restocked a full line of 13″ M1 MacBook Airs, Certified Refurbished, starting at only $849 and up to $190 off original MSRP. These are the cheapest M1-powered MacBooks for sale today at... Read more
In stock and on sale! 16″ 10-Core M1 Pro MacB...
Amazon has new 16″ 10-Core/512GB M1 Pro MacBook Pros in stock today and on sale for $50 off MSRP including free shipping. Their prices are the lowest available for new M1 Pro 16″ MacBook Pro from any... Read more
Deal Alert!: 14″ M1 Pro with 10-Core CPU in s...
Amazon has the new 14″ M1 Pro MacBook Pro with a 10-Core CPU and 16-Core GPU in stock today and on sale for $2299.99 including free shipping. Their price is $200 off Apple’s standard MSRP, and it’s... Read more
Apple has 24-inch M1 iMacs (8-Core CPU/8-Core...
Apple has restocked a wide array of 24-inch M1 iMacs with 8-Core CPUs and 8-Core GPUs in their Certified Refurbished store. Models are available starting at only $1269 and range up to $260 off... Read more
Select 24″ M1 iMacs are on sale for $100 off...
Sales of Apple’s new 24″ M1 iMacs have been rare since its introduction, perhaps due to global supply issues. However, B&H is offering a $100 discount on select 24″ iMacs, and they’re in stock... Read more
M1 Mac minis are back in stock today at Apple...
Apple has M1-powered Mac minis available in their Certified Refurbished section starting at only $589 and up to $140 off MSRP. Each mini comes with Apple’s one-year warranty, and shipping is free: –... Read more

Jobs Board

Registered Nurse (RN) Employee Health PSJH -...
…is calling for a Registered Nurse (RN) Employee Health PSJH to our location in Apple Valley, CA.** We are seeking a Registered Nurse (RN) Employee Health PSJH to be Read more
Systems Administrator - Pearson (United State...
…and troubleshoot Windows operating systems (workstation and server), laptop computers, Apple iPads, Chromebooks and printers** + **Administer and troubleshoot all Read more
IT Assistant Level 1- IT Desktop Support Anal...
…providing tier-1 or better IT help desk support in a large Windows and Apple environment * Experience using IT Service Desk Management Software * Knowledge of IT Read more
Human Resources Business Partner PSJH - Provi...
…**is calling a** **Human Resources Business Partner, PSJH** **to our location in Apple Valley, CA.** **Applicants that meet qualifications will receive a text with Read more
Manager Community Health Investment Programs...
…is calling a Manager Community Health Investment Programs PSJH to our location in Apple Valley, CA.** **Qualified candidates will be invited to do a self-paced video Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.