TweetFollow Us on Twitter

Nov 96 Top 10
Volume Number:12
Issue Number:11
Column Tag:Symantec Top Ten

Symantec Top Ten

By Scott Morison, Symantec Technical Support

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

Q: After upgrading my Mac from 64M to 136MB of RAM the Symantec Project Manager (v8.1) now barks at me with -37 error, saying, “The application Symantec Project Manager cannot start up because of an unknown error.” What gives?

A: This error will occur while launching the Symantec Project Manager on any Macintosh possessing more than 110MB of RAM. There are two ways to fix this:

1) Call or send e-mail to Symantec Technical Support and request the SPM -37 patch.

Phone: (541) 465-8470

E-mail: support@devtools.symantec.com

2) You can make the necessary changes to the Symantec Project Manager yourself using ResEdit:

• Make a copy of the Symantec Project Manager and open it in ResEdit.

• Open the STR# ID 203 in the STR# resource.

• Change the 2nd string of STR# 203 to read, <Options>

• Change the 3rd string of STR# 203 to read, <Prefs>

Q: How do I send and receive data from the a serial port on my Mac?

A: This code sample walks through the basics of sending and receiving character data from a serial port:

[Thanks to Mark Y. Geschelin for the original code this is based on.]

#include <console.h>
#include <Serial.h>
#include <Devices.h>
#include <stdio.h>
#include <console.h>
#include <stdlib.h>
#include <Serial.h>
#include <Devices.h>

#define SERBUFSIZ 1024    // Define the Input buffer size to use
char *inbuf;// pointer to input character buffer
short inRefNum, outRefNum;// Device driver Reference Number holders

/////////////////////////////////////////
//  Initialize the Serial Port   //
/////////////////////////////////////////
OSErr InitializeSerialPort()
{
 OSErr   err;
 SerShk flags;
 Ptr buf;
 // Open Serial Drivers (note: Use “.BIn” and “.BOut” for Printer port)
    // assign Output and Input driver reference numbers
 if (err = OpenDriver(“\p.AOut”,&outRefNum)) return err;
 if (err = OpenDriver(“\p.AIn”, &inRefNum)) return err;  
 
 // Initialize input and output drivers, and 
    // assign basic communication protocols 
 if (err = SerReset(outRefNum,baud57600 + data8 + stop10+noParity))
 return err;
 if (err = SerReset(inRefNum,baud57600 + data8 + stop10+noParity)) 
 return err;
 // Set up the serial input driver to use a buffer of size SERBUFSIZ
 if(!(buf = NewPtr(SERBUFSIZ))) return MemError();
 if (err = SerSetBuf(inRefNum, buf, SERBUFSIZ)) return err;

 // Specify handshaking and cotrol info for the input driver 
 flags.fXOn = false; // XOn/Xoff Output enabled?
 flags.fCTS = true;// Using Clear To Send harware handshaking?
 flags.xOn = 0x11; // Character for XOn
 flags.xOff = 0x13;// Character for XOff
 flags.errs = false; // Abort Input requests if: Parity error
    //           or: Hardware overrun
    //           or: Franing error
 flags.evts = false; // Post event on CTS or Break status change
 flags.fInX = false; // XOn/Xoff Input enabled?
 flags.fDTR = false; // Using Data Terminal Ready flow control

 // Set driver to reflect settings
 if ( err = SerHShake(outRefNum,&flags)) return err;     
 // Allocate input buffer; return reason on failure  
 if (!( inbuf = (char *) NewPtr(SERBUFSIZ))) return MemError();
 
 return noErr;   // noErr = 0
}

////////////////////////////////////////////////////////
// Send a String to the Serial Port              //
////////////////////////////////////////////////////////
void SendSerial(char *outString, long strLen)
{
   FSWrite(outRefNum,  &strLen, outString);
}

[ Thanks to Andrew McFarland, Noah Lieberman and Levi Brown for their contributions. ]


/////////////////////////////
//  Main   //
/////////////////////////////
int main(void)
{
 OSErr err;
 long count;
 char keyChar;

 csetmode(C_RAW,stdin);   // disable echo and line buffering for input

 if (err = InitializeSerialPort()) // Check for failure to initialize port
 printf(“Serial initialization failed. Error = %d\n”,err);
 else
 {
 SendSerial(“ATX\r”,5);   // Send ubiquitous Hayes reset
 keyChar = getchar();// Get a character from stdin
 while (keyChar != 0x1B)  // Loop until escape key is pressed
 {
 if (keyChar > 0)// Is there a character to send?
 SendSerial(&keyChar,1);  // Call SendSerial to send it.
               
 SerGetBuf(inRefNum, &count); 
 // Is there anything in the Input buffer
 if (count) 
 {
 FSRead(inRefNum,&count,inbuf);  
 // Read all chars from Input driver
    // Send to console
 for (long i=0; i < count; putchar(inbuf[i++]));
 }
 keyChar = getchar();// Get another character from stdin
 }
 }
 
 // Clean up: Reset Ports, return pointer
 if(outRefNum) CloseDriver(outRefNum);
 if(inRefNum) CloseDriver(inRefNum);
 if (inbuf)  DisposPtr(inbuf);

 return EXIT_SUCCESS;
}

Q: How do I load and play a sound from a ‘snd ’ resource in my Symantec C/C++ or Pascal application?

A: Here’s an example of how to do just that, in both C and Pascal.

#include <Sound.h>

void CallSndPlay(void);   // Function Prototype
void CallSndPlay()
{
 Handle mySndHandle; // handle to an ‘snd ‘ resource
 SndChannelPtr mySndChan; // pointer to a sound channel
 OSErr myErr;

 void DoError(OSErr);// prototype for your DoError function

 mySndChan = nil;         // Initialize channel ptr for error checking
 mySndHandle = GetResource(‘snd ‘, mySndID); 
 // Read in ‘snd’ resource from resource

 if ( mySndHandle != NULL ) // Check for NULL handle
 {
 myErr = SndPlay (mySndChan, mySndHandle, TRUE);
 if ( myErr )
 DoError(myErr); // You define the function, “DoError.” 
 }
}

int main()
{
 InitToolbox();  // Function you get to define.
 CallSndPlay(9000);// Play ‘snd’ resource ID 9000
}


And the same snippet in Pascal would look like this:

program mySound;
uses Sound;

procedure CallSndPlay (mySndID: integer);

 { Be sure to add the file sound.p to your project }     

var
 mySndHandle: Handle;{ handle to an ‘snd ‘ resource }          
 mySndChan: SndChannelPtr;{ pointer to a sound channel } 
 myErr: OSErr;

begin { CallSndPlay }

 mySndChan   := nil; { Initialize channel ptr for error checking }
   mySndHandle := GetResource(‘snd ‘, mySndID);    
 { Read in ‘snd’ resource from resource }

 if (mySndHandle <> nil) then { check for a nil handle }
 begin
 myErr := SndPlay(mySndChan, mySndHandle, true);
 if (myErr <> noErr) then
 DoError(myErr); { You define the procedure, “DoError.” }
 end;

end;  { CallSndPlay }


begin { Main }
 InitToolbox;    { You need to add this procedure yourself. }
 CallSndPlay(9000);{ Play ‘snd’ resource ID 9000 }
end.  { Main }

Q: How do you view the contents of an array in the Symantec v8.1 Debugger?

A: Highlight the array in the debugger source window and hit Command-D, or just type the name of the array into the data view window.

• Select Address rather than Pointer from the Data menu.

• Turn down the hierarchical arrow to display array contents.

Q: How do I disable the debugging call outs that are embedded in the native Exception handling routines in Symantec C++?

A: Comment out the debugging #defines in, TCL #includes.cpp. Then re-precompile your headers.

Find the lines:

#define TCL_DEBUG// include debugging code, TCL_ASSERT, etc.
#define BR_DEBUG // if debugging BEL
#define TCL_BREAK_CATCH   // enter debugger on catch_all_()
#define TCL_BREAK_FAILURE // enter debugger on Failure()
#define TCL_BREAK_ASSERT  
// enter debugger on TCL_ASSERT fail (2.0.5) and comment them out:
#define TCL_DEBUG// include debugging code, TCL_ASSERT, etc.
#define BR_DEBUG // if debugging BEL
#define TCL_BREAK_CATCH   // enter debugger on catch_all_()
#define TCL_BREAK_FAILURE // enter debugger on Failure()
#define TCL_BREAK_ASSERT  // enter debugger on TCL_ASSERT fail (2.0.5)

Q: How do I convert projects that use MetroWerks proprietary .lib format libraries such as AEGizmos.lib, with Symantec C++.

A: We have recently built a MW .lib library format translator that allows you to simply drop a CodeWarrior v8 .lib format library into your Symantec C/C++ project allowing you to call any routines defined therein. This new translator will be available on our 8.0r6 CD coming this Fall.

If you would like to obtain this translator prior to the release of the CD, feel free to contact Symantec Technical Support:

Phone: 541/465-8470

E-mail: support@devtools.symantec.com

Q: Using Cafe, I have derived class B from class A. Since class B does not have a constructor, how do I pass the parameters to class A?

A: Whenever a class is instantiated, a default constructor (no parameters) is implicitly called if you do not create one explicitly. You need give class B a constructor which will receive the parameters and then pass them on to A via the super keyword.

class B extends A
{
 public B(double  aParameter)
 {
 super(aParameter);
 }
}

Q: Using Cafe how can I make a Component that is drawn to the screen observable since I cannot derive from both Component and Observable?

A: Say you want to make the cells in a Java spreadsheet both Observable and Observers so that you can perform distributed calculations based only on the items that changed, however, the items in your “table” need to be text fields so that the user can input the data. You need to do the following: 1) Create a Cell class that derives from Observable and implements Observer. 2) Create a SmartTextField class that derives from TextField, and make a data member that is a Cell. Now when data is entered in your SmartTextField you can process events in the SmartTextField and set variables in the Cell data member, call its notifyObservers method, etc.

Note: you can also have a reference in the Cell to the SmartTextField that contains it so that you can set the text:

class Cell extends Observable implements Observer
{
 double  curValue;
 double  oldValue;
 double  delta;

 SmartTextField  theText;

 public Cell(SmartTextField  aText)
 {
 theText = aText;
 }
 public void Update(Observable o, Object arg)
 {
 oldValue = curValue;// We are using a model where the cell is both an 
    // observing and observed so if this method is being
    // called then a cell that this object        
    // observes has changed.
 curValue += ((Cell)o).delta; // calculate delta
 theText.setText(“”+curValue);
 // set the SmartTextField to the new Value
 super.setChanged();
 notifyObservers();
 super.clearChanged();       
 }
}

class SmartTextField extends TextField
{
 Cell    theCell;

 public SmartTextField(String someText, int width)
 {
 super(someText, width);
 theCell = new Cell(this);
 }

 ////------ handleEvent ------/////
 public boolean handleEvent(Event evt)
 {
 // when the cell gets the focus, save its value 
    // so we can  check if it has changed when it loses the focus
 if(evt.id == evt.GOT_FOCUS)
 {
 ((SmartTextField)evt.target).selectAll();
 ((SmartTextField)evt.target).theCell.oldVal =                       

 Double.valueOf(((SmartTextField)evt.target)
 .getText()).doubleValue();
 return false;
 }
        
 //lost the focus check to see if the value changed and deal with it
 if(evt.id == evt.LOST_FOCUS)
 {
 //get the value of the current cell
 ((SmartTextField)evt.target).theCell.curVal = 
 Double.valueOf(((SmartTextField)evt.target)
 .getText()).doubleValue();

 //calculate the delta
 ((SmartTextField)evt.target).theCell.delta =  
 ((SmartTextField)evt.target).theCell.curVal -  
 ((SmartTextField)evt.target).theCell.oldVal;

 //if the delta is non zero, i.e. the value was changed
 if ( ((SmartTextField)evt.target).theCell.delta != 0 )
 {
 ((SmartTextField)evt.target).theCell.setChanged();
 ((SmartTextField)evt.target).theCell.notifyObservers();
 return true;
 } 
 else  
 return false;
 }
 else
 return false;
 }
}

 
AAPL
$116.31
Apple Inc.
+1.64
MSFT
$48.70
Microsoft Corpora
+0.48
GOOG
$534.83
Google Inc.
-2.16

MacTech Search:
Community Search:

Software Updates via MacUpdate

Herald 5.0.1 - Notification plugin for M...
Note: Versions 2.1.3 (for OS X 10.7), 3.0.6 (for OS X 10.8), and 4.0.8 (for OS X 10.9) are no longer supported by the developer. Herald is a notification plugin for Mail.app, Apple's Mac OS X email... Read more
Firetask 3.7 - Innovative task managemen...
Firetask uniquely combines the advantages of classical priority-and-due-date-based task management with GTD. Stay focused and on top of your commitments - Firetask's "Today" view shows all relevant... Read more
TechTool Pro 7.0.6 - Hard drive and syst...
TechTool Pro is now 7, and this is the most advanced version of the acclaimed Macintosh troubleshooting utility created in its 20-year history. Micromat has redeveloped TechTool Pro 7 to be fully 64... Read more
PhotoDesk 3.0.1 - Instagram client for p...
PhotoDesk lets you view, like, comment, and download Instagram pictures/videos! (NO Uploads! / Image Posting! Instagram forbids that! AND you *need* an *existing* Instagram account). But you can do... Read more
SuperDuper! 2.7.3 - Advanced disk clonin...
SuperDuper! is an advanced, yet easy to use disk copying program. It can, of course, make a straight copy, or "clone" -- useful when you want to move all your data from one machine to another, or do... Read more
MacJournal 6.1.5 - Create, maintain, and...
MacJournal is the world's most popular journaling software for the Mac. MacJournal 6 adds a calendar mode that show entries from any journal, geolocation, word count, and progress tracking, as well... Read more
Skim 1.4.10 - PDF Reader and note-taker...
Skim is a PDF reader and note-taker for OS X. It is designed to help you read and annotate scientific papers in PDF, but is also great for viewing any PDF file. Skim includes many features and has a... Read more
FontExplorer X Pro 4.2.2 - Font manageme...
FontExplorer X Pro is optimized for professional use; it's the solution that gives you the power you need to manage all your fonts. Now you can more easily manage, activate and organize your... Read more
SoftRAID 5.0.5 - High-quality RAID manag...
SoftRAID allows you to create and manage disk arrays to increase performance and reliability. SoftRAID's intuitive interface and powerful feature set makes this utility a must have for any Mac OS X... Read more
DEVONthink Pro 2.8.2 - Knowledge base, i...
Save 10% with our exclusive coupon code: MACUPDATE10 DEVONthink Pro is your essential assistant for today's world, where almost everything is digital. From shopping receipts to important research... Read more

Latest Forum Discussions

See All

Sago Mini Road Trip (Education)
Sago Mini Road Trip 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: Go for a fun-filled drive with Jinja the cat. Pick a destination, select a vehicle and hit the road. What will Jinja... | Read more »
New Tower Defense Game, Kingdom Rush: Or...
New Tower Defense Game, Kingdom Rush: Origins, is Available Today Posted by Jessica Fisher on November 20th, 2014 [ permalink ] iPad Only App - Designed for the iPad | Read more »
Sunburn! (Games)
Sunburn! 1.0.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.0 (iTunes) Description: Your ship is gone. Your crew is scattered. One option remains. Gather your crew... and jump into the sun. Reunite your... | Read more »
Tapventures Review
Tapventures Review By Jennifer Allen on November 20th, 2014 Our Rating: :: ODDLY COMPELLINGUniversal App - Designed for iPhone and iPad Tapventures is an increasingly hands-off one-tap RPG, but expect it to hook you despite your... | Read more »
Who Wore it Best? The Hunger Games: Girl...
With The Hunger Games: Mockingjay Part 1 out this weekend, Who Wore it Best? pits two Hunger Games tie-ins, Girl on Fire and Panem Run, against each other in a brutal and pointless fight to the death. I wonder where we got that idea from? | Read more »
Ironkill Review
Ironkill Review By Jennifer Allen on November 20th, 2014 Our Rating: :: LACKLUSTER PUNCHINGUniversal App - Designed for iPhone and iPad Ironkill is a freemium focused fighting game that doesn’t offer particularly thrilling fights... | Read more »
Real-Time Multiplayer Match-3 RPG Crusad...
Real-Time Multiplayer Match-3 RPG Crusaders Quest Set to Launch Next Month Posted by Ellis Spice on November 20th, 2014 [ permalink ] | Read more »
Checkpoint Champion Review
Checkpoint Champion Review By Jennifer Allen on November 20th, 2014 Our Rating: :: SPEEDY DRIFTINGUniversal App - Designed for iPhone and iPad Checkpoint Champion is a drift-focused racing game that’s ideal for short but fun gaming... | Read more »
MediaFire iOS 8 Native Update Brings New...
MediaFire iOS 8 Native Update Brings New “Power Upload” Feature to iPad and iPhone Posted by Jessica Fisher on November 20th, 2014 [ | Read more »
Mark of the Dragon Review
Mark of the Dragon Review By Nadia Oxford on November 20th, 2014 Our Rating: :: TRAIN YOUR DRAGON FOR WARUniversal App - Designed for iPhone and iPad Mark of the Dragon is a bit rough and scaly, but flying into battle on the backs... | Read more »

Price Scanner via MacPrices.net

64GB iPod touch on sale for $249, save $50
Best Buy has the 64GB iPod touch on sale for $249 on their online store for a limited time. Their price is $50 off MSRP. Choose free shipping or free local store pickup (if available). Sale price for... Read more
15″ 2.2GHz Retina MacBook Pro on sale for $17...
 B&H Photo has the 2014 15″ 2.2GHz Retina MacBook Pro on sale for $1799.99 for a limited time. Shipping is free, and B&H charges NY sales tax only. B&H will also include free copies of... Read more
New Logitech AnyAngle Case/Stand Brings Flexi...
Logitec has announced the newest addition to its suite of tablet products — the Logitech AnyAngle. A protective case with an any-angle stand for iPad Air 2 and all iPad mini models, AnyAngle is the... Read more
2013 15-inch 2.0GHz Retina MacBook Pro availa...
B&H Photo has leftover previous-generation 15″ 2.0GHz Retina MacBook Pros available for $1499 including free shipping plus NY sales tax only. Their price is $500 off original MSRP. B&H will... Read more
16GB Retina iPad mini on sale today for $199,...
 Staples has 2nd generation 16GB Retina iPad minis on sale for $199 on their online store for a limited time. Their price is $100 off MSRP. Choose free shipping or free local store pickup (if... Read more
Developers Start Designing Apps for Apple Wat...
Apple has announced the availability of WatchKit, software that gives developers a set of tools to easily create experiences designed specifically for Apple Watch. Apple’s developer community can now... Read more
C Spire Launches iPad Air 2 and iPad Mini 3 o...
C Spire has announced that iPad Air 2 with Wi-Fi + Cellular and iPad mini 3 with Wi-Fi + Cellular are now available on its 4G LTE network. C Spire offers both new iPads with a range of data plans... Read more
Are You On Your Last PC? – The ‘Book Mystique
Will your current PC be your last? Quite possibly so if you define “personal computer” as a traditional desktop or laptop form factor machine according to some commentators. So then, the upshot that... Read more
Save up to $180 on MacBook Airs with Apple re...
The Apple Store has Apple Certified Refurbished 2014 MacBook Airs available for up to $180 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
16GB iPad mini available for $219, save $30
Walmart has 16GB iPad minis (1st generation) available for $219 on their online store. Their price is $30 off MSRP. Choose free shipping or free store pickup (if available). Price for online orders... Read more

Jobs Board

*Apple* Store Leader Program - College Gradu...
Job Description: Job Summary As an Apple Store Leader Program agent, you can continue your education as you major in the art of leadership at the Apple Store. You'll Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Senior Event Manager, *Apple* Retail Market...
…This senior level position is responsible for leading and imagining the Apple Retail Team's global event strategy. Delivering an overarching brand story; in-store, Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Project Manager / Business Analyst, WW *Appl...
…a senior project manager / business analyst to work within our Worldwide Apple Fulfillment Operations and the Business Process Re-engineering team. This role will work Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.