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

iMazing 2.3.2 - Complete iOS device mana...
iMazing (was DiskAid) is the ultimate iOS device manager with capabilities far beyond what iTunes offers. With iMazing and your iOS device (iPhone, iPad, or iPod), you can: Copy music to and from... Read more
Cocktail 10.4.1 - General maintenance an...
Cocktail is a general purpose utility for macOS that lets you clean, repair and optimize your Mac. It is a powerful digital toolset that helps hundreds of thousands of Mac users around the world get... Read more
Backup and Sync 3.35.5978.2967 - File ba...
Backup and Sync (was Google Drive) is a place where you can create, share, collaborate, and keep all of your stuff. Whether you're working with a friend on a joint research project, planning a... Read more
Adobe Lightroom 6.12 - Import, develop,...
Adobe Lightroom is available as part of Adobe Creative Cloud for as little as $9.99/month bundled with Photoshop CC as part of the photography package. Lightroom 6 is also available for purchase as a... Read more
Apple iTunes 12.6.2 - Play Apple Music a...
Apple iTunes lets you organize and stream Apple Music, download and watch video and listen to Podcasts. It can automatically download new music, app, and book purchases across all your devices and... Read more
Apple macOS Sierra 10.12.6 - The latest...
With Apple macOS Sierra, Siri makes its debut on Mac, with new features designed just for the desktop. Your Mac works with iCloud and your Apple devices in smart new ways, and intelligent... Read more
VMware Fusion 8.5.8 - Run Windows apps a...
VMware Fusion 8 and Fusion 8 Pro--the latest versions of its virtualization software for running Windows on a Mac without rebooting--include full support for Windows 10, OS X El Capitan, and the... Read more
Apple Safari 10.1.2 - Apple's Web b...
Note: The direct download link is currently unavailable. It is available in the OS X 10.12.6 release, as well as in the Apple Security Updates. Apple Safari is Apple's web browser that comes with OS... Read more
OnyX 3.2.7 - Maintenance and optimizatio...
OnyX is a multifunction utility that you can use to verify the startup disk and the structure of its system files, to run miscellaneous maintenance and cleaning tasks, to configure parameters in the... Read more
Postbox 5.0.16 - Powerful and flexible e...
Postbox is a new email application that helps you organize your work life and get stuff done. It has all the elegance and simplicity of Apple Mail, but with more power and flexibility to manage even... Read more

Latest Forum Discussions

See All

Realpolitiks Mobile (Games)
Realpolitiks Mobile 1.0 Device: iOS Universal Category: Games Price: $5.99, Version: 1.0 (iTunes) Description: PLEASE NOTE: The game might not work properly on discontinued 1GB of RAM devices (iPhone 5s, iPhone 6, iPhone 6 Plus, iPad... | Read more »
Layton’s Mystery Journey (Games)
Layton’s Mystery Journey 1.0.0 Device: iOS Universal Category: Games Price: $15.99, Version: 1.0.0 (iTunes) Description: THE MUCH-LOVED LAYTON SERIES IS BACK WITH A 10TH ANNIVERSARY INSTALLMENT! Developed by LEVEL-5, LAYTON’S... | Read more »
Full Throttle Remastered (Games)
Full Throttle Remastered 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Originally released by LucasArts in 1995, Full Throttle is a classic graphic adventure game from industry legend Tim... | Read more »
Stunning shooter Morphite gets a new tra...
Morphite is officially landing on iOS in September. The game looks like the space shooter we've been needing on mobile, and we're going to see if it fits the bill quite shortly. The game's a collaborative effort between Blowfish Studios, We're Five... | Read more »
Layton's Mystery Journey arrives to...
As you might recall, Layton's Mystery Journey is headed to iOS and Android -- tomorrow! To celebrate the impending launch, Level-5's released a new trailer, complete with an adorable hamster. [Read more] | Read more »
Sidewords (Games)
Sidewords 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Grab a cup of coffee and relax with Sidewords. Sidewords is part logic puzzle, part word game, all original. No timers. No... | Read more »
Noodlecake Games' 'Leap On!...
Noodlecake Games is always good for some light-hearted arcade fun, and its latest project, Leap On! could carry on that tradition. It's a bit like high stakes tetherball in a way. Your job is to guide a cute little blob around a series of floating... | Read more »
RuneScape goes mobile later this year
Yes, RuneScape still exists. In fact, it's coming to iOS and Android in just a few short months. Jagex, creators of the hit fantasy MMORPG of yesteryear, is releasing RuneScape Mobile and Old School RuneScape for mobile devices, complete with... | Read more »
Crash of Cars wants you to capture the c...
Crash of Cars is going full on medieval in its latest update, introducing castles and all manner of new cars and skins fresh from the Dark Ages. The update introduces a new castle-themed map (complete with catapults) and a gladiator-style battle... | Read more »
Golf Clash guide: How to rise through th...
For a little game as cartoony and colorful as Golf Clash, competition can be quite fierce. You need to be on top of your game and have the best equipment possible if you want to get very far. True success is measured by both player skill and the... | Read more »

Price Scanner via MacPrices.net

DEVONthink To Go 2.1.7 For iOS Brings Usabili...
DEVONtechnologies has updated DEVONthink To Go, the iOS companion to DEVONthink for Mac, with enhancements and bug fixes. Version 2.1.7 adds an option to clear the Global Inbox and makes the grid... Read more
15-inch 2.2GHz Retina MacBook Pro, Apple refu...
Apple has Certified Refurbished 2015 15″ 2.2GHz Retina MacBook Pros available for $1699. That’s $300 off MSRP, and it’s the lowest price available for a 15″ MacBook Pro. An Apple one-year warranty is... Read more
13-inch 2.3GHz Silver MacBook Pro on sale for...
B&H Photo has the new 2017 13″ 2.3GHz/256GB Silver MacBook Pro (MPXU2LL/A) on sale for $1399 including free shipping plus NY & NJ sales tax only. Their price is $100 off MSRP. Read more
Apple Tackles Distracted Driving With iOS 11...
One of the most important new features coming in iOS 11 is Do Not Disturb while driving, intended to help drivers stay more focused on the road. With Do Not Disturb while driving, your iPhone can... Read more
iMazing Mini for Mac: Free Automatic and Priv...
Geneva, Switzerland-based indie developer DigiDNA has released iMazing Mini, their free macOS utility designed to automatically back up iOS devices over any local Wi-Fi network. The app offers users... Read more
Clearance 2016 13-inch MacBook Airs, Apple re...
Apple dropped prices recently on Certified Refurbished 2016 13″ MacBook Airs, with models now available starting at $809. An Apple one-year warranty is included with each MacBook, and shipping is... Read more
9.7-inch 2017 iPads available for $299, save...
B&H Photo has 2017 9.7″ 32GB WiFi iPads on sale for $30 off MSRP for a limited time. Shipping is free, and pay sales tax in NY & NJ only: – 32GB iPad WiFi: $299, $30 off Read more
Welcome to the new MacPrices.net!
Welcome to the newly redesigned MacPrices.net! MacPrices has been comprehensively redesigned from the ground up over the past couple of weeks. The new design is cleaner, with less clutter, minimal... Read more
Clearance iMacs available for up to $370 off...
B&H Photo has clearance 21″ and 27″ Apple iMacs available for up to $370 off original MSRP, each including free shipping plus NY & NJ sales tax only: – 27″ 3.3GHz iMac 5K: $1929 $370 off... Read more
Sale! 15-inch 2.8GHz MacBook Pros for $100 of...
B&H Photo has the new 2017 15″ 2.8GHz Touch Bar MacBook Pros on sale for $100 off MSRP. Shipping is free, and B&H charges sales tax in NY & NJ only: – 15″ 2.8GHz MacBook Pro Space Gray: $... Read more

Jobs Board

Frameworks Engineering Manager, *Apple* Wat...
Frameworks Engineering Manager, Apple Watch Job Number: 41632321 Santa Clara Valley, California, United States Posted: Jun. 15, 2017 Weekly Hours: 40.00 Job Summary Read more
*Apple* Customer Experience (ACE) Leader - A...
…management to deliver on business objectivesTraining partner store staff on Apple products, services, and merchandising guidelinesCoaching partner store staff on Read more
Frameworks Engineering Manager, *Apple* Wat...
Frameworks Engineering Manager, Apple Watch Job Number: 41632321 Santa Clara Valley, California, United States Posted: Jun. 15, 2017 Weekly Hours: 40.00 Job Summary Read more
*Apple* Solutions Consultant - Apple Inc. (U...
…about helping others on a team while also delighting customers? As an Apple Solutions Consultant (ASC), you will discover customers needs and help connect them Read more
Frameworks Engineering Manager, *Apple* Wat...
Frameworks Engineering Manager, Apple Watch Job Number: 41632321 Santa Clara Valley, California, United States Posted: Jun. 15, 2017 Weekly Hours: 40.00 Job Summary Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.