TweetFollow Us on Twitter

Jun 91 Letters
Volume Number:7
Issue Number:6
Column Tag:Letters

Sorry, no Yerk

By Kirk Chase, Editor

Yerk is NOT on Disk

Kirk Chase

MacTutor

Jörg Langowski, in his March column, indicated that the sources for NEON, now public domain and called “Yerk”, would be put that month’s source code disk. It did not come in with Mr. Langowski’s materials, but we have obtained it. Unfortunately, Yerk is much to large, even after compression to place on anything but a high density floppy. Therefore, Yerk will NOT be distributed on the source code disk. We obtained it on America OnLine. Other BBS and on-line services should be carrying Yerk also. We are sorry that we are not able to distribute it to you.

Animated Cursor Corrections

Rich Lesh

Bridgeton, MO

In my March ’91 article “Animated Color Cursors,” I mentioned that you must be careful to avoid re-entrant conditions with the SetCursor() calls.

Sometimes this is difficult even in the most well behaved programs. I was informed by a reader, Joe Schwartz, that Apple has posted a tidbit of information that can solve this problem. According to the Q&A Stack that Apple distributes, there is a low memory byte, CrsrBusy at 0x8CD, that indicates whether or not the cursor is currently busy, i.e. shouldn’t be changed. The following correction to the code published in March makes use of this global to prevent any calls to SetCursor() when the cursor is busy.

This prevents any cursor fragments from appearing on the screen.

/* 1 */

static pascal void SpinCursorTask()
{
    long oldA5;
 
    oldA5=SetCurrentA5();
    gCursorTask->vblCount=gSpeed;
    if (gSpinCycles && !(*(Byte*)0x8cd)){
        gSpinCycles--;
        (*gCurrentHdl)->index++;
        (*gCurrentHdl)->index%=(*gCurrentHdl)->n;
        if (gColorCursor){
            SetCCursor((*gCurrentHdl)->frame[(*gCurrentHdl)->index].cursorHdl);
        }else{
            SetCursor(*(*gCurrentHdl)->frame[(*gCurrentHdl)->index].cursorHdl);
        }
    }
    SetA5(oldA5);
}

HOTWIRE Labs Address

Kirk Chase

MacTutor

HOTWIRE Labs’ address was inadvertently left off in the April issue. We regret this sincerely as their hardware debugger, Xtrap, is a great developer’s product. Their address is

HOTWIRE Labs

8912 Jamesburg

Witchita, KS 67212

(316) 838-8849

AppleLink: D4527

INIT Mr. Bus Error

Tom Nielsen

Recommended Testing

336 Cernon St.

Vacaville, CA 95688

In February’s issue, Dave Dunham said “I don’t like them (programs) generating bus errors, having to reboot without Mr. Bus Error and rerunning the programs”. Being a programmer and tester myself, I can understand Mr. Dunham’s frustration; however, there is a way to continue the program’s execution as if INIT Mr. Bus Error were not installed.

In MacsBug, examine the registers on the left looking for the characteristic 00F0F0F1 that INIT Mr. Bus Error uses. (Note: Sometimes the register is 00F0F0Fx, where x is some number besides 1. This happens when the application uses the handle as a handle to an array or string). If this value is in register A0, then you would type “A0=0;g.” If it’s in A1, then you’d type “A1=0;g.” That’s it. The program continues as if INIT Mr. Bus Error were not installed. In fact, I type this line so often that I’ve created MacsBug macros to do it for me. These macros clear out register A0, A1 or both and then continue.

[Tom has included three resources that can be added to MacsBug’s prefs file “Debugger Prefs” (found in the System Folder) which may be found on this month’s source disk. Pasting these resources into this file and rebooting, adds the clear Mr Bus Error commands to the list of macros.

Macros Meaning Expansion

azg A Zero Go A0=0;g

aog A One Go A1=0;g

abg A Both Go A0=0;A1=0;g

The template for editing these resources should already be in your Debugger Prefs file.-ed and Tom]

More Debugging Tips

Mike Morton

Honolulu, HI

Some comments on Rex Reinhart’s letter in the March issue:

First, you needn’t use “asm” to drop into the debugger. Think C has a Debugger() trap defined for you, so just put this line in your source:

/* 2 */

Debugger(); /* invoke debugger */

An equally useful trap is the DebugStr(), which takes a single Pascal-string argument. You can “print” simple messages with:

/* 3 */

DebugStr(“\phello, world!”);

or you can print out more useful information to print variables or other values:

/* 4 */

{
 char tempBuf[100];
 sprintf(tempBuf, “x is %d”, x);
 CtoPstr(tempBuf);
 DebugStr(tempBuf);
}

Don’t forget the CtoPstr() call to convert the string from C to Pascal format.

An advantage of this kind of output is that during repeated debugging sessions you needn’t enter your variables into the Data window in the Think C debugger. Or if you don’t have the memory for the debugger, or are debugging a standalone application, this stuff is handy. (of course, if you have a text window for debugging output, you don’t usually need DebugStr().)

Another trick is the equivalent of Think C’s conditional breakpoints. Suppose you have a loop which is locking up after many iterations. If you press the Interrupt switch, you’ll get Macsbug or TMON, not the Think C debugger. Instead, put this line anywhere in the loop:

/* 5 */

if (optionKeyDown()) DeBugger();

(Here, optionKeyDown() is some function you write which tests for the option key.) Run your application until it seems to hang up, then hold down the option key-now you’re in the Think C debugger.

Lastly, be sure to remove all these calls before you distribute your application!

[Still, Think C would definitely be friendlier if its debugger were more like Think Pascal. I feel something like selecting a variable and the a menu command to examine its contents would be nice. I suppose something a little more interactive than DebugStr().-ed]

Call For Articles

Kirk Chase

Editor, MacTutor

Every so often (about five or six times a day), I am asked what I would like to see in the way of articles for MacTutor. At that time, I pull out my editorial calendar (which is scribbled on with a multitude of changes) to read off some of the upcoming topics. Here are a number of requests from readers:

• Programming for modules. This would include such things as given the application’s working directory, a folder name of where the modules are located, and a filter proc, return a path (or directory) and list of filtered files to be used later. Also, we have had articles on external functions/modules in January and February of 1990, but one on file format filters would also be nice.

• Dialog enhancements such as a preview picture.

• A great article or two on the in’s and out’s of the File Manager, Resource Manager, Finder information and MultiFinder information (such as proper use of the SCC ports).

• System 7 quirks, tips and discussions.

• 32-bit QuickDraw, animation (B&W/Color), sound.

• Networking/Groupware articles.

• Neat DEF’s.

And the list goes on and on.

So if you have an elegant solution to a problem, send it in. You’ll gain recognition and inspire others.

GUI Wars

XVT Software, Inc.

1800 30th St., Box 17665

Boulder, CO 80308

(303) 443-4223

One way to reach a bigger market for your product is to publish it on multiple platforms. This is called, “cross development”. This has been growing steadily for the past few years. Even on the Macintosh, there are different platforms such as A/UX to develope for.

The problem with cross development is differing machine architectures and user interfaces. You can reuse some of your code, but it is hard to separate the Mac Toolbox from your code; this makes it difficult to port your code over. You could go to the lowest level of character I/O (PLEASE DON’T!), but that is not why you got started on the Macintosh. You could even rewrite everything from scratch.

Another solution offers an elegant way to port your graphical program over to another windowing environment. Enter XVT, or the Extensible Virtual Toolkit, from XVT Software Inc. With XVT, you can obtain GUI portability. Now you can develope C/C++ code for THINK or MPW. Then, you take that same source over to your other platform environment and compile without a whole lot of changes.

There is a down side to this GUI solution. The first is the cost factor; each library for a particular platform costs about $800; to get the source it is around $5000; also a license is required for distribution. This price does include an annual technical support and update program.

The second problem and third problem are speed degradation and capability limitations. These problems are only natural. One would expect a slight slow down in execution speed because of the higher-level calls. Also, some features beyond the normal ones are not implemented due to the need for cross compatibility.

Still, these factors are probably not large when faced with the potential savings in time/resources and potential gains in new markets. I know now that AppMaker now generates code for XVT. This makes development time go down dramatically. Imagine using AppMaker to get the user interface down, and then generating code that is cross compatible. I imagine dollar signs.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Pocket Arcade Story (Games)
Pocket Arcade Story 1.00 Device: iOS Universal Category: Games Price: $4.99, Version: 1.00 (iTunes) Description: Here comes a new challenger: it's the arcade simulation game you've been waiting for! Build your very own gaming... | Read more »
How to get coins faster in Rodeo Stamped...
There comes a time in a cowboy or cowgirl's life when all the riding and lassoing skills in the world aren't enough. You're going to need some cold, hard cash to keep your sky zoo expanding in Rodeo Stampede. [Read more] | Read more »
How to out-do Cam Newton in Can You Dab?
The thing about dance crazes is that you're never really sure when they've run their course. Take the Dab, for instance. Propelled by its adoption as the touchdown celebration of choice for Carolina Panthers quarterback Cam Newton, the Dab seemed... | Read more »
Artik Games releases Splashy Cats for An...
Splashy Cats had us hooked from the title alone, and when we found out the game was literally just zig-zagging one of our favourite pop-culture references, guised as a playable cat character, down a river – our appetites were whetted to say the... | Read more »
Battle Cars (Games)
Battle Cars 1.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.1 (iTunes) Description: Welcome to the world of Battle Cars. Battle Cars is a classic arcade top-down racing game with fast mini cars and funny weapons to... | Read more »
How to get started with live.ly
One could be forgiven for thinking that there are already plenty of streaming video apps out there. It's just that the App Store charts would insist that you're mistaken. [Read more] | Read more »
Rodeo Stampede: Guide to all Savannah an...
A "gotta catch 'em all" joke seems appropriate here, even though we're talking animals in Rodeo Stampede and not pocket monsters. By now you've probably had plenty of rides, tamed some animals and built yourself a pretty nice zoo | Read more »
Is there cross-platform play in slither....
So you've sunken plenty of hours into crawling around in slither.io on your iPhone or iPad. You've got your stories of tragedy and triumph, the times you coiled four snakes at one time balanced out by the others when you had a length of more than... | Read more »
Rodeo Stampede guide to running a better...
In Rodeo Stampede, honing your skills so you can jump from animal to animal and outrun the herd as long as possible is only half the fun. Once you've tamed a few animals, you can bring them home with you. [Read more] | Read more »
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 »

Price Scanner via MacPrices.net

Why Use Indie Opera And Vivaldi Instead Of Sa...
For many years my web browser workhorses were various permutations and spinoffs of the Netscape/Mozilla/Firefox Open Source platform, and the Norwegian indie browser Opera, which I took a shine to... Read more
Western Digital Launches Worlds Fastest 256GB...
At the Mobile World Congress in Shanghai Western Digital Corporation this week introduced a new suite of 256 gigabyte (GB) microSD cards, which includes the new 256GB SanDisk Extreme microSDXC UHS-I... Read more
KeyCue 8.1 Integrates With Typinator To Displ...
Ergonis Software has released KeyCue 8.1, a new version of the company’s keyboard shortcut cheat sheet. KeyCue 8 introduced a new way to define a wide variety of triggers, which can be used to... Read more
Save up to $600 with Apple refurbished Mac Pr...
Apple has Certified Refurbished Mac Pros available for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The following... Read more
21-inch 2.8GHz iMac on sale for $1199, save $...
Amazon has the 21″ 2.8GHz iMac (model #MK442LL/A) on sale for $1199.99 including free shipping. Their price is $100 off MSRP, and it’s the lowest price available for this model. Read more
13-inch 2.5GHz MacBook Pro (Apple refurbished...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more
MacBook Airs on sale for up to $50-$100 off M...
B&H Photo has 13″ and 11″ MacBook Airs on sale for up to $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air: $849 $50 off list price - 11″ 1.... Read more
Brexit Vote Result Forecast To Slash UK 2016...
Uncertainty and economic volatility can be expected to increase over the next nine months, as the Brexit and concerns over the future of the EU hit IT investment, say Canalys market analysts, with... Read more
13-inch 256GB MacBook Air on sale for $1149,...
Amazon has the 2016 13″ 1.6GHz/256GB MacBook Air (model MMGG2LL/A) on sale for $1149.99 including free shipping. Their price is also $50 off MSRP. Read more
Haven App Launches New Age Of Wirless 911 Eme...
Haven from RapidSOS represents a transformation in access to emergency services from a phone call solely dependent on voice to a robust data connection for voice, text, medical/demographic data.... Read more

Jobs Board

*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* Retail - Multiple Positions, Willow...
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* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
*Apple* iPhone 6s and New Products Tester Ne...
…we therefore look forward to put out products to quality test for durability. Apple leads the digital music revolution with its iPods and iTunes online store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.