TweetFollow Us on Twitter

Boot Disk Icon
Volume Number:5
Issue Number:5
Column Tag:Programmer's Forum

Related Info: Finder Interface Device Manager

Change the Boot Disk Icon

By David Dunham, Goleta, CA

I’ve been asked several times how my bootDiskIcon INIT works. I told the questioners that I’d answer in MacTutor.

Also, this is a short article. MacTutor needs more of them -- I know how to initialize Managers and handle events, and I certainly don’t need to see pictures in hexadecimal. (This isn’t just a snide remark directed at the editor, it’s a plea to those with nifty ideas that don’t need an entire application to show them off. Write a one or two page article!)

bootDiskIcon is a hack that came about because I don’t own an HD20. Apple insists on portraying their internal hard disk as an HD 20 on my desktop. I got so disgusted with this that I wrote an INIT to show something else, anything but an HD 20. ICN# 256, in fact. bootDiskIcon is inferior to programs like Façade-- it’s less flexible, and may not work with all hard disks -- but it was better than nothing, and it’s easy to understand.

The key to bootDiskIcon is the way the Finder handles disk icons. A pedantic digression: how does one find out how Finder handles icons? It’s not in Inside Macintosh. Therefore, it must be in a Technical Note. But Finder isn’t a category in the table of contents. So it’s off to the index but it’s not listed under “icon.” Luckily, it was one of the “Finder” Tech Notes, number 28. How did I know to keep looking? Because I’d seen it years ago when it came out, and knew it was there somewhere. Always skim every Tech Note -- not to memorize them, but to remember that they’re there.

When the Finder wants a disk icon, it gives the disk driver a Control call with csCode = 21. The driver returns a pointer to an ICN#. My first inclination was, why write code when you can change data? The ICN# must be part of the disk driver. The disk driver is part of Apple HD SC Setup. I found it there (it’s not a resource), changed it, and reinstalled the driver. This failed utterly -- there’s apparently a checksum.

If I couldn’t change the ICN# on disk, how about changing it in memory? I can get its address in memory by giving the driver a csCode = 21 call, then simply change the data. This is what bootDiskIcon does.

Before I get to what you’re all waiting for, the source code, I’ll mention the difference between patches and INITs. A patch is a change to a piece of code, almost always one of the traps. An INIT resource is any piece of code that runs at startup time (typically in a file of type INIT, cdev, or rdev). An INIT frequently installs a patch, but it could do anything at all, like playing a tune or subverting a disk driver’s icon.

More ideological baggage: INITs should announce their presence. Paul Mercer has a good way to do this, called ShowINIT. I’m told the source code’s available on AppleLink. I’ve modified it to handle color icons, and compiled the whole thing as a separate resource, SHOW 0. bootDiskIcon calls this code. You’re welcome to use it in any non-commercial (free or shareware) programs -- just use ResEdit to paste SHOW 0 into your own INIT file. You may not use it in public domain programs. These are those without a copyright holder, and I don’t want my code in the public domain. Don’t make the mistake of calling your free program “public domain.” Once you do, you can’t get it back (despite what Adobe thinks).

We can almost get to the code, but you might be wondering how to test it. It’s real inconvenient to reboot, just to see if a change worked. Luckily, you don’t have to. Remember that an INIT is just a piece of code that happens to get executed at boot time. You can often execute the same code at any time, and instruct your development system to make an INIT resource when you’re finished debugging. In bootDiskIcon’s case, I simply executed it, juggled into the Finder layer, and verified that I’d chant the code. It starts out by calling my SHOW resource -- the parameters are reversed from the way they’re defined because my ShowICON is defined as a Pascal procedure. My sloppiness in not defining it as such in this C program probably works only because this is an INIT -- if I trash the stack, it doesn’t much matter, since I’ll be returning to INIT 31 very soon.

The real work begins with finding out the driver refNum and drive of the first mounted disk (now you know why it’s called bootDiskIcon -- I told you it was a quick hack). I then find the address of the driver’s ICN#, get an ICN# of my own choice, and overwrite the driver’s using BlockMove.

#include <deviceMgr.h>
#include <hfs.h>

#define NIL 0L

void  main(void);/* Always use prototypes! */

void main() {
 Ptr    icn;
 int    error;   /* Shouldn’t really be write-only  */
 HParamBlockRec  pb;
 cntrlParam cpb;
 Handle handle;

 /* Show icon on the bottom of the screen */
 handle = GetResource(‘SHOW’,0); /* Get handle to the PROC */
 if (handle == 0L) { /* Something’s wrong (couldn’t load) */
 SysBeep(32);    /* Let somebody know */
 return;/* Don’t try to call it! */
 }
 HLock(handle);  /* Hold down the PROC */
 (**(ProcPtr *)handle)(-1,128);  
 /* ShowICON() -- note reversed parameters */
 HUnlock(handle);/* Let it float in the heap again */

 /* Change the icon */
 pb.volumeParam.ioNamePtr = NIL;
 pb.volumeParam.ioVolIndex = 1;  /* First mounted volume */
 error = PBHGetVInfo(&pb,FALSE);
 cpb.ioRefNum = pb.volumeParam.ioVDRefNum;
 cpb.ioVRefNum = pb.volumeParam.ioVDrvInfo;  
 /* drive (ioDrvNum) */
 cpb.csCode = 21;
 error = PBControl(&cpb,FALSE);
 icn = *(Ptr *)(&cpb.csParam[0]);
 handle = GetResource(‘ICN#’,256);
 BlockMove(*handle,icn,256L);
}

Known Bugs

Actually, these are rumored bugs, because it works for me! I’m told it doesn’t work with Jasmine disks where the driver puts the SCSI ID inside the flower. It probably doesn’t work with a boot floppy, because the Finder normally special cases the disk icon. (Furthermore, Finder probably doesn’t consider floppies to be “foreign drives.”)

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Vitamin-R 2.48 - Personal productivity t...
Vitamin-R creates the optimal conditions for your brain to work at its best by structuring your work into short bursts of distraction-free, highly focused activity alternating with opportunities for... Read more
Beamer 3.3 - Stream any movie file from...
Beamer streams to your Apple TV.... Plays any movie file - Just like the popular desktop movie players, Beamer accepts all common formats, codecs and resolutions. AVI, MKV, MOV, MP4, WMV, FLV. To... Read more
Shredo 1.2.2 - $9.99
Shredo is a beautiful, functional file-shredding and privacy scan utility. It permanently shreds files, folders, and external volumes' contents to keep information secure and impossible for anyone to... Read more
Final Draft 10.0.3 - Industry-leading sc...
Final Draft allows you to use your creative energy to focus on the content; let Final Draft take care of the style. Final Draft is the number-one selling application specifically designed for writing... Read more
Google Chrome 59.0.3071.109 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Chromium 59.0.3071.109 - 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 59.0.3071.109: This update has no Flash plug-... Read more
iShowU Instant 1.1.8 - Full-featured scr...
iShowU Instant gives you real-time screen recording like you've never seen before! It is the fastest, most feature-filled real-time screen capture tool from shinywhitebox yet. All of the features you... Read more
MacFamilyTree 8.2 - Create and explore y...
MacFamilyTree gives genealogy a facelift: modern, interactive, convenient and fast. Explore your family tree and your family history in a way generations of chroniclers before you would have loved.... Read more
DiskCatalogMaker 7.0.2 - 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
ExpanDrive 5.5.4 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more

Latest Forum Discussions

See All

Solve the disappearance of history’s gre...
Blue Brain Games invites you to indulge in an immersive hands-on 3D puzzle adventure in similar vein to The Room series, with its debut release The House of Da Vinci. Set during the historic period of the Italian Renaissance (when Leonardo himself... | Read more »
Age of Rivals (Games)
Age of Rivals 3.3 Device: iOS Universal Category: Games Price: $.99, Version: 3.3 (iTunes) Description: Deep civilization-building strategy in a fast-paced card game! | Read more »
Panthera Frontier (Games)
Panthera Frontier 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Angry Birds Evolution beginner's gu...
Angry Birds changes things up a fair bit in its latest iteration, Angry Birds Evolution. The familiar sling-shot physics mechanics are still there, but the game now features team-based gameplay, RPG elements, and a new top-down view. With all of... | Read more »
Sega Forever is for the retro game fans
Sega is launching a new retro games service titled Sega Forever, in a move that's sure to delight games enthusiasts with a bit of nostalgia. Sega's releasing five classic games for free. The titles include Sonic the Hedgehog, Phantasy Star II,... | Read more »
The Little Acre (Games)
The Little Acre 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: | Read more »
Lovely adventure game 'The Little A...
The Little Acre makes its way from PC to iOS today and it's a real charmer. It's a lovely little adventure game set in 1950's Ireland, gorgeously animated in a style slightly reminiscent of old Disney films. The game won a lot of praise for its... | Read more »
Futurama: Worlds of Tomorrow officially...
Futurama: Worlds of Tomorrow arrives next Thursday, and it features . . . Stephen Hawking? Turns out a few of your favorite science super stars, including Bill Nye, Neil DeGrasse Tyson, and George Takei will be making an appearance alongside the... | Read more »
MU Origin’s new update offers exciting c...
MU Origin is kicking off the summer with style. Its latest update is a real doozy, offering up plenty of fresh content. New challenges, some extra help for newcomers, and new costumes are just a few of the things you will find in the new patch. | Read more »
Pokémon GO introduces Raid Battles and a...
If you were hoping to conquer any gyms today in Pokémon GO you're in for a bit of disappointment. Niantic has closed gyms in the game to prepare for a huge upcoming update that is going to complete change Pokémon GO's competitive elements. The... | Read more »

Price Scanner via MacPrices.net

10.5-inch iPad Pros available for up to $20 o...
B&H Photo has the new 2017 10.5″ iPad Pros available for up to $20 off MSRP including free shipping plus NY & NJ sales tax only: - 64GB iPad Pro WiFi: $649 - 256GB iPad Pro WiFi: $749 - 512GB... Read more
Three Off-The-Beaten-Track iOS Apps That Dese...
One of the great things about using iPads and iPhones is the vast selection of apps available for most anything you want or need to do. The three outlined in this article have been in my core app... Read more
Apple No. 1 Spot In Gartner Top 100 Vendors i...
Gartner, Inc. has unveiled the top global 100 vendors in IT in 2016 based on their revenue across IT (excluding communication services) and component market segments. In the Gartner Global Top 100:... Read more
Clearance iMacs available for up to $300 off...
B&H Photo has clearance 21″ and 27″ Apple iMacs available starting at $949, each including free shipping plus NY & NJ sales tax only: - 27″ 3.3GHz iMac 5K: $1999 $300 off original MSRP - 27″... Read more
1.4GHz Mac mini, refurbished, available for $...
The Apple Store has Apple Certified Refurbished 1.4GHz Mac minis available for $419. Apple’s one-year warranty is included, and shipping is free. Their price is $80 off MSRP, and it’s the lowest... Read more
Free Mixoo iOS Photo Editing App Gets Major U...
Button Software Technology has announced Mixoo 3.0, an important feature update to the company’s photo editor for iOS devices. Mixoo offers amazing ways to edit as well as decorate personal photo... Read more
FNable 2.0 Function Key Enabling Software Get...
Briksoftware has released FNable 2.0 With Touch Bar Support, a major new version of the function key enabling software now compatible with Touch Bar keyboards. FNable’s simplicity that allows users... Read more
Clearance 2016 12-inch Retina MacBooks, Apple...
Apple recently dropped prices on Certified Refurbished 2016 12″ Retina MacBooks, with models now available starting at $1019. Apple will include a standard one-year warranty with each MacBook, and... Read more
Clearance iPad Pros, Apple refurbished, avail...
Apple recently dropped prices on Certified Refurbished 2016 9″ and 12″ iPad Pros, with models now available starting at $469. An Apple one-year warranty is included with each model, and shipping is... Read more
13-inch 2.7GHz Retina MacBook Pro, Apple refu...
Apple has Certified Refurbished 13″ 2.7GHz/128GB Retina MacBook Pros available for $929–a recent $170 price drop. An Apple one-year warranty is included, and shipping is free: - 13″ 2.7GHz/128GB... Read more

Jobs Board

Product Manager, *Apple* News - Apple Inc....
…on new product areas, many of which have great potential impact to Apple .Drives the definition of broad, complex, and high impact products for worldwide markets, Read more
Sr. Software Engineer, *Apple* Online Store...
…building high throughput, high performance, reliable, checkout & payment platform that support Apple online stores. You will be working with the latest in services Read more
Product Owner, *Apple* Communities - Apple...
…for managing and delivering a world-class community experience to Apple 's customers. Your primary responsibilities include developing internal-facing tools, 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
Pan Europe Market Development Manager %u2014...
…local artists across the region.* Building strong relationships with local Apple teams & collaborating on mutually beneficial projects.* Building strong Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.