TweetFollow Us on Twitter

Mar 94 Tips
Volume Number:10
Issue Number:3
Column Tag:Tips & Tidbits

Tips & Tidbits

Using GWorlds and the Pallette Manager

Edited by Scott Boyd and Neil Ticktin

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

Tip Of The Month

Studies have shown that anyone who has to focus visual attention in one place for a long time (like a computer user), will blink less often. This makes your eyes dry, and is the main cause of eyestrain. Even though blinking is a reflex action and usually outside of conscious control, there’s an easy way to increase your blink-rate.

Write the word “Blink!” on a small piece of paper. Then stick it someplace on your computer monitor where you will always be able to see it. Put one on every monitor you have. Every time you notice it, follow the instruction: Blink a couple of times, and look away from your monitor to focus on some distant object for a few seconds. Then get back to work before your boss catches you staring off into space.

You’ll notice the paper a lot at first, eventually less often. The initial effect is just to make you think about it. But even after you stop noticing it consciously, leave the note there. It has a subliminal “training” effect that makes you blink more often. It’s like tying a string around your finger to help you remember something. This really works to reduce eyestrain. But it’s so simple and inexpensive that most people don’t believe it until they’ve used it for a while.

- Lee David Rimar, Absoft Corporation

[As with all tips, consult your physician before trying this at home! - Ed. nst]

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.

Down and dirty

The following two MOVE instructions will load a zero into lower D0 on a 68000 processor and a one on 68020 or better.


/* 1 */
; Get offset to be scaled
303C 0001  Move.W  #1,D0

; Get one of the two bytes 00 or 01!
103B 02FB  Move.B  *-3(PC,D0.W*2),D0 

This is a much cheaper way than _Gestalt to find out if the 32x32 => 64 multiply instructions are available, etc. To see why this works, first consider 68020 or better hardware. After the Move.W instruction lower D0 will contain the value one. The *-3(PC) part of the Move.B addresses the 3C byte of the Move.W instruction, but indexing by D0 is also specified. Since the scaling field is two, the effective index is two times one or two. Thus the Move.B fetches the byte two down from the 3C byte, which is the 01 byte. Thus on 68020 or better hardware we get a one.

Now consider 68000 hardware. It does not implement index scaling, nor does it notice it being called for! Thus a 68000 will execute the Move.B instruction as if it were the instruction:


/* 2 */
 Move.B  *-3(PC,D0.W),D0

Now the effective index is one (not two) and the zero byte that is one down from the 3C byte is loaded. Thus on 68000 hardware we get a zero. Note also that the Zero toggle will be set on 68000 and cleared on 68020 or better hardware. This allows an immediate BZ/BEq or BNZ/BNE to be used.

The information that the 68000 processor fully decodes all 16384 possible opcode words but does not fully decode the addressing modes in extension words can be found in the Advanced Topics appendix of Motorola's MC68020 32-Bit Microprocessor User's Manual (Second Edition).

- Charles Cranston

zben@ni.umd.edu

Starting an init

I always the following code for the entry point for an INIT, WDEF or any other code resource. This template can only be used with Think C, as it uses assembly and it relies on A4 to reference globals. The 'Custom Header' must be checked in the 'Set Project Type '-dialog.


/* 3 */
void main (void) ;
void header (void) ;

void header (void)
{
  asm {
    BRA.S  @next   ; jump over the following data
    DC.L   'TMON'  ;   tell TMON todo label-searching
    DC.L   'INIT'  ;   use this and the next 4 bytes to label
    DC.L   'SPPS'  ;   this code resouce
 next:
    LEAheader, A0  ; load the address of the code resource in A0
    JMP    main  ; jump to main
  }
}

#include <SetUpA4.h>   // We need this if we have globals

void main (void)
{ Ptr  mySelf ;  // pointer to this code resource

  asm {
    move.l A0, mySelf
  }

  RememberA0()   ;  // put A0 in a save spot
  SetUpA4() ;  // and use it to set up A4
        
  RestoreA4() ;

The low-level debugger TMON looks for MacsBug labels in code resources that it knows about. If it doesn’t know the type of a resource to be code, or if it is detached and no longer a resource, TMON will not show labels in the code. The TMON User Area 'AddRange/TMON.fixed' looks for the string 'TMON' two bytes into every block it finds, and then asks TMON to scan it for labels. It was written by Ken Schalk and it is available on bulletin boards.

The following two strings mark what the block is about. This is great for debugging. If I want to set a breakpoint, I simply search for these strings in memory,

After the 'next' label, I load the address of the start of the code resource in register A0. This is required by Think C so that it can retrieve it to set A4 for accessing globals. The statements RememberA0() and SetUpA4() do the trick. Always be sure to call RestoreA4() before leaving the routine. A0 contains a pointer to the start of the block, and I save it in the variable 'mySelf'. If I want to keep the code in memory afterwards, I simply have to execute 'DetachResource(RecoverHandle(mySelf))'.

- Jan Bruyndonckx

Wave Research, Belgium

Tiny MPWScript

Here’s a tiny MPW script I find indispensible when collaborating on an MPW project. It lets you instantly open the files that your coworkers have changed.

The CheckOut command does have a -open option, but with this script you can choose which files to open and in what order, and you can wait until later to do it. Of course, once you have a file open you can use CompareRevisions to see what changed. Put this script in your MPW:Scripts folder and call it “Checked”. Opens the file referenced in the output of a projector CheckOut -p command:


/* 4 */
Checked out "HD:Blah:Blah.c,9" from "Blah ".

You can execute lines of this form directly from your worksheet (in groups or individually). This is an amazingly complicated script...not! It ignores its first argument, which is always “out”, its third argument, which is always “from”, and its fourth argument, which is the project pathname. All we care about is the second argument, which is almost the filename that we want the trick is ignoring the comma and digits at the end, which we do by matching the argument against a regular expression (see “help patterns”).


/* 5 */
(evaluate "{2}" =~ /( )®1,[0-9.]+/ ) > Dev:Null
open "{®1}"

Yes, it’s a two-line script.

- Dave Lyons

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Skype 8.52.0.138 - Voice-over-internet p...
Skype allows you to talk to friends, family and co-workers across the Internet without the inconvenience of long distance telephone charges. Using peer-to-peer data transmission technology, Skype... Read more
Bookends 13.2.6 - Reference management a...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Bookends uses the cloud to sync reference libraries on all the Macs you use.... Read more
BusyContacts 1.4.0 - 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
Chromium 77.0.3865.75 - 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. Version 77.0.3865.75: A list of changes is available... Read more
DiskCatalogMaker 7.5.5 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
Alfred 4.0.4 - Quick launcher for apps a...
Alfred is an award-winning productivity application for OS X. Alfred saves you time when you search for files online or on your Mac. Be more productive with hotkeys, keywords, and file actions at... Read more
A Better Finder Rename 10.45 - File, pho...
A Better Finder Rename is the most complete renaming solution available on the market today. That's why, since 1996, tens of thousands of hobbyists, professionals and businesses depend on A Better... Read more
iFinance 4.5.11 - Comprehensively manage...
iFinance allows you to keep track of your income and spending -- from your lunchbreak coffee to your new car -- in the most convenient and fastest way. Clearly arranged transaction lists of all your... Read more
OmniGraffle Pro 7.11.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
BBEdit 12.6.7 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more

Latest Forum Discussions

See All

Five Nights at Freddy's AR: Special...
Five Nights at Freddy's AR: Special Delivery is a terrifying new nightmare from developer Illumix. Last week, FNAF fans were sent into a frenzy by a short teaser for what we now know to be Special Delivery. Those in the comments were quick to... | Read more »
Rush Rally 3's new live events are...
Last week, Rush Rally 3 got updated with live events, and it’s one of the best things to happen to racing games on mobile. Prior to this update, the game already had multiplayer, but live events are more convenient in the sense that it’s somewhat... | Read more »
Why your free-to-play racer sucks
It’s been this way for a while now, but playing Hot Wheels Infinite Loop really highlights a big issue with free-to-play mobile racing games: They suck. It doesn’t matter if you’re trying going for realism, cart racing, or arcade nonsense, they’re... | Read more »
Steam Link Spotlight - The Banner Saga 3
Steam Link Spotlight is a new feature where we take a look at PC games that play exceptionally well using the Steam Link app. Our last entry talked about Terry Cavanaugh’s incredible Dicey Dungeons. Read about how it’s a great mobile experience... | Read more »
PSA: GRIS has some issues
You may or may not have seen that Devolver Digital just released GRIS on the App Store, but we wanted to do a quick public service announcement to say that you might not want to hop on buying it just yet. The puzzle platformer has come to small... | Read more »
Explore the world around you in new matc...
Got a hankering for a fresh-feeling Match-3 puzzle game that offers a unique twist? You might find exactly what you’re looking for with What a Wonderful World, a new spin on the classic mobile genre which merges entertaining puzzles with global... | Read more »
Combo Quest (Games)
Combo Quest 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Combo Quest is an epic, time tap role-playing adventure. In this unique masterpiece, you are a knight on a heroic quest to retrieve... | Read more »
Hero Emblems (Games)
Hero Emblems 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: ** 25% OFF for a limited time to celebrate the release ** ** Note for iPhone 6 user: If it doesn't run fullscreen on your device... | Read more »
Puzzle Blitz (Games)
Puzzle Blitz 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Puzzle Blitz is a frantic puzzle solving race against the clock! Solve as many puzzles as you can, before time runs out! You have... | Read more »
Sky Patrol (Games)
Sky Patrol 1.0.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0.1 (iTunes) Description: 'Strategic Twist On The Classic Shooter Genre' - Indie Game Mag... | Read more »

Price Scanner via MacPrices.net

Save $150-$250 on 10.2″ WiFi + Cellular iPads...
Verizon is offering $150-$250 discounts on Apple’s new 10.2″ WiFi + Cellular iPad with service. Buy the iPad itself and save $150. Save $250 on the purchase of an iPad along with an iPhone. The fine... Read more
Apple continues to offer 13″ 2.3GHz Dual-Core...
Apple has Certified Refurbished 2017 13″ 2.3GHz Dual-Core non-Touch Bar MacBook Pros available starting at $1019. An standard Apple one-year warranty is included with each model, outer cases are new... Read more
Apple restocks 2018 MacBook Airs, Certified R...
Apple has restocked Certified Refurbished 2018 13″ MacBook Airs starting at only $849. Each MacBook features a new outer case, comes with a standard Apple one-year warranty, and is shipped free. The... Read more
Sunday Sale! 2019 27″ 5K 6-Core iMacs for $20...
B&H Photo has the new 2019 27″ 5K 6-Core iMacs on stock today and on sale for up to $250 off Apple’s MSRP. Overnight shipping is free to many locations in the US. These are the same iMacs sold by... Read more
Weekend Sale! 2019 13″ MacBook Airs for $200...
Amazon has new 2019 13″ MacBook Airs on sale for $200 off Apple’s MSRP, with prices starting at $899, each including free shipping. Be sure to select Amazon as the seller during checkout, rather than... Read more
2019 15″ MacBook Pros now on sale for $350-$4...
B&H Photo has Apple’s 2019 15″ 6-Core and 8-Core MacBook Pros on sale today for $350-$400 off MSRP, starting at $2049, with free overnight shipping available to many addresses in the US: – 2019... Read more
Buy one Apple Watch Series 5 at Verizon, get...
Buy one Apple Watch Series 5 at Verizon, and get a second Watch for 50% off. Plus save $10 on your first month of service. The fine print: “Buy Apple Watch, get another up to 50% off on us. Plus $10... Read more
Sprint offers 64GB iPhone 11 for free to new...
Sprint will include the 64GB iPhone 11 for free for new customers with an eligible trade-in in of the iPhone 7 or newer through September 19, 2019. The fine print: “iPhone 11 64GB $0/mo. iPhone 11... Read more
Verizon offers new iPhone 11 models for up to...
Verizon is offering Apple’s new iPhone 11 models for $500 off MSRP to new customers with an eligible trade-in (see list below). Discount is applied via monthly bill credits over 24 months. Verizon is... Read more
AT&T offers free $300 reward card + free...
AT&T Wireless will include a second free 64GB iPhone 11 with the purchase of one eligible iPhone at full price. They will also include a free $300 rewards card. The fine print: “Buy an elig.... Read more

Jobs Board

Student Employment (Blue *Apple* Cafe) Spri...
Student Employment (Blue Apple Cafe) Spring 2019 Penn State University Campus/Location: Penn State Brandywine Campus City: Media, PA Date Announced: 12/20/2018 Date Read more
Best Buy *Apple* Computing Master - Best Bu...
**732359BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Store Associates **Location Number:** 000171-Winchester Road-Store **Job Description:** Read more
*Apple* Mobile Master - Best Buy (United Sta...
**732324BR** **Job Title:** Apple Mobile Master **Job Category:** Store Associates **Location Number:** 000013-Fargo-Store **Job Description:** **What does a Best Read more
Best Buy *Apple* Computing Master - Best Bu...
**732455BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Sales **Location Number:** 000449-Auburn Hills-Store **Job Description:** **What does a Read more
*Apple* Mobility Pro - Best Buy (United Stat...
**732490BR** **Job Title:** Apple Mobility Pro **Job Category:** Store Associates **Location Number:** 000449-Auburn Hills-Store **Job Description:** At Best Buy, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.