EmbeddedRelated.com
Forums

Interrupt occurs in ISR

Started by agab...@... August 15, 2005
Before anyone gets smart, NO, I'm NOt talking about myself, but the 
yahoo groups server. For the last 2 weeks I've been receiving messages 
in an almost random order, often I'll get an original 4-5 days after 
I've replied to it! From Augustos post it seems he too is seeing the 
same thing, anyone else having such fun?

Al


Beginning Microcontrollers with the MSP430

My "me too"

didn't see a reply of mine showing up. Only realised after someone posted
about 
the hickups (I think it was agusto). Let's see if this msg shows up.

	G.

Onestone wrote:
> Before anyone gets smart, NO, I'm NOt talking about myself, but the 
> yahoo groups server. For the last 2 weeks I've been receiving messages

> in an almost random order, often I'll get an original 4-5 days after 
> I've replied to it! From Augustos post it seems he too is seeing the 
> same thing, anyone else having such fun?
> 
> Al
> 
> 
> 
> 
> .
> 
>  
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
> 
> 
> 


yes
Ezy

onestone@ones... wrote:

> Before anyone gets smart, NO, I'm NOt talking
about myself, but the
> yahoo groups server. For the last 2 weeks I've been receiving messages
> in an almost random order, often I'll get an original 4-5 days after
> I've replied to it! From Augustos post it seems he too is seeing the
> same thing, anyone else having such fun?
>
> Al
>
>
>
> .
>
>
>
>
>
> SPONSORED LINKS
> Msp430 
>
<http://groups.yahoo.com/gads?t=ms&k=Msp430&w1=Msp430&w2=Texas+instruments&w3=Hardware&c=3&sI&.sig=xuz24nQly0fEs4s4c77DVQ>

>   Texas instruments 
>
<http://groups.yahoo.com/gads?t=ms&k=Texas+instruments&w1=Msp430&w2=Texas+instruments&w3=Hardware&c=3&sI&.sig=ZI7D3BqNQwLlCMglo1M4LA>

>   Hardware 
>
<http://groups.yahoo.com/gads?t=ms&k=Hardware&w1=Msp430&w2=Texas+instruments&w3=Hardware&c=3&sI&.sig=8vBQtBIxbLOw2tOFPhKTtw>

>
>
>
> 
> >.
>
>
> 
>





Seems to work fine for me, but my email proggy threads stuff, so I'm
not sure 
I would notice anyhow.. 

*shrug*
-Micah 


On Wednesday 17 August 2005 2:30 pm, Onestone wrote:
> Before anyone gets smart, NO, I'm NOt talking about myself, but the
>  yahoo groups server. For the last 2 weeks I've been receiving
messages
>  in an almost random order, often I'll get an original 4-5 days after
>  I've replied to it! From Augustos post it seems he too is seeing the
>  same thing, anyone else having such fun?
>
>  Al
>
>
>
>  .
>
>
>
>
>
>
> SPONSORED LINKS
> Msp430   Texas instruments   Hardware
>
>
> .

Well, fine here too, on both accounts (on different providers ;-). It is
not the yahoogroups server but the up-state of your providers mailserver
or the connection between them. Just a downtime of 5min can get you in
the "stall" state at yahoos. It seems that they retry to send 
messages after some days then, the messages in the meantime are lost.

Matthias

On Wed, Aug 17, 2005 at 06:48:36PM +0000, Micah
Stevens wrote:
> Seems to work fine for me, but my email proggy threads stuff, so I'm
not sure 
> I would notice anyhow.. 
> 
> *shrug*
> -Micah 
> 
> 
> On Wednesday 17 August 2005 2:30 pm, Onestone wrote:
> > Before anyone gets smart, NO, I'm NOt talking about myself, but
the
> >  yahoo groups server. For the last 2 weeks I've been receiving
messages
> >  in an almost random order, often I'll get an original 4-5 days
after
> >  I've replied to it! From Augustos post it seems he too is seeing
the
> >  same thing, anyone else having such fun?
> >
> >  Al
> >
> >
> >
> >  .
> >
> >
> >
> >
> >
> >
> > SPONSORED LINKS
> > Msp430   Texas instruments   Hardware
> >
> >
> > .
> 
> 
> 
> .
> 
>  
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
> 
        Matthias

Hi again, just one last thing before I let this thread go for good

Clifford Heath wrote:

> Of course, but a good global optimiser will
produce excellent code in
>
>almost any case. And that's the point - you're free to express
yourself
>in code (i.e., write your program for *humans*), but you get a result
>that's good for the *machine* anyway. There's a tradeoff, though
not a
>big one, nevertheless how you lean depends on whether you have a greater
>need to pander to people or to the machine. When you're working in a
>team
>of ten or twenty, on 2 million lines of code (as I am), the people
>issues
>matter a *lot*.
>  
>
This is one thing I've never really understood. The assumption that
C is 
more user friendly, and easier to read than asm. I don't get it.

    MOV, ADD, SUB, RRC, RLA, MAC, MPY, DIV, BIC, BIS, BSET, DECSZ etc 
are all very common abbreviations across a wide range of microprocessors 
and controllers, and are easily understood. at least as easily as LTOA, 
? /R, /N, ^=, &, &&, FLOOR, PRAGMA, MALLOC, CALLOC, * (*) AND ALL
ITS 
VARIATIONS.

Both are equally crytpic, and both are easily understandable. C contains 
far more nonalphanumeric symbols, which complicates things, but the 
consequences and actions of any 'instruction' are more
'wdiespread, it 
does more, which can be both a blessing and a hindrance.

asm uses few symbols, few instructions and each instruction does just 
one clearly defined thing, with possible actiosn associated with it such 
as flag setting. It is therefore less to learn, easier to grasp, but 
requires more instructions per high level task usually..

I don't see that one is more easily read by humans than the other 
though. Either can be made illegible, and either can be made readable. 
being more voluble isn't necessary being more readable. I cannot 
remember the long convolluted names so beloved of C++ pogrammers for 
example, which makes debugging much harder, whereas it is easy to store 
a chain of well thought out short function names as used by C(as I write 
it) and asm

Al

>  
>
>  
>


Al,
How do you declare, initialize and mange a structure in ASM. Or Memory
allocation?
If R going to mention MACROS, then you are not using ASM anymore :)
ASM is like Latin. It's good in it's own Church and for it's own
followers
:)
Alex

BTW.
One can find a neutral ground between ASM and any other high level language
by simply using FORTH :)
A

----- Original Message ----- 
From: "Onestone" <onestone@ones...>
To: <msp430@msp4...>
Sent: Wednesday, August 17, 2005 9:38 PM
Subject: Re: [msp430] Re: Interrupt occurs in ISR A


> Hi again, just one last thing before I let this
thread go for good
>
> Clifford Heath wrote:
>
> > Of course, but a good global optimiser will produce excellent code in
> >
> >almost any case. And that's the point - you're free to
express yourself
> >in code (i.e., write your program for *humans*), but you get a result
> >that's good for the *machine* anyway. There's a tradeoff,
though not a
> >big one, nevertheless how you lean depends on whether you have a
greater
> >need to pander to people or to the machine. When you're working in
a
> >team
> >of ten or twenty, on 2 million lines of code (as I am), the people
> >issues
> >matter a *lot*.
> >
> >
> This is one thing I've never really understood. The assumption that C
is
> more user friendly, and easier to read than asm. I don't get it.
>
>     MOV, ADD, SUB, RRC, RLA, MAC, MPY, DIV, BIC, BIS, BSET, DECSZ etc
> are all very common abbreviations across a wide range of microprocessors
> and controllers, and are easily understood. at least as easily as LTOA,
> ? /R, /N, ^=, &, &&, FLOOR, PRAGMA, MALLOC, CALLOC, * (*) AND
ALL ITS
> VARIATIONS.
>
> Both are equally crytpic, and both are easily understandable. C contains
> far more nonalphanumeric symbols, which complicates things, but the
> consequences and actions of any 'instruction' are more
'wdiespread, it
> does more, which can be both a blessing and a hindrance.
>
> asm uses few symbols, few instructions and each instruction does just
> one clearly defined thing, with possible actiosn associated with it such
> as flag setting. It is therefore less to learn, easier to grasp, but
> requires more instructions per high level task usually..
>
> I don't see that one is more easily read by humans than the other
> though. Either can be made illegible, and either can be made readable.
> being more voluble isn't necessary being more readable. I cannot
> remember the long convolluted names so beloved of C++ pogrammers for
> example, which makes debugging much harder, whereas it is easy to store
> a chain of well thought out short function names as used by C(as I write
> it) and asm
>
> Al
>
> >
> >
> >
> >
>
>
>
>
> .
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>
> ---
> avast! Antivirus: Inbound message clean.
> Virus Database (VPS): 0533-3, 08/17/2005
> Tested on: 8/17/2005 10:42:36 PM
> avast! - copyright (c) 1988-2005 ALWIL Software.
> http://www.avast.com
>
>
>


Dude, compilers do it all the time. What a silly question. 

On Thursday 18 August 2005 2:50 am, alex@alex... wrote:
> Al,
>  How do you declare, initialize and mange a structure in ASM. Or Memory
>  allocation?
>  If R going to mention MACROS, then you are not using ASM anymore :)
>  ASM is like Latin. It's good in it's own Church and for
it's own followers
>
>  :)
>
>  Alex
>
>  BTW.
>  One can find a neutral ground between ASM and any other high level
> language by simply using FORTH :)
>  A
>
>  ----- Original Message -----
>  From: "Onestone" <onestone@ones...>
>  To: <msp430@msp4...>
>  Sent: Wednesday, August 17, 2005 9:38 PM
>  Subject: Re: [msp430] Re: Interrupt occurs in ISR A
>
>  > Hi again, just one last thing before I let this thread go for good
>  >
>  > Clifford Heath wrote:
>  > > Of course, but a good global optimiser will produce excellent
code in
>  > >
>  > >almost any case. And that's the point - you're free to
express yourself
>  > >in code (i.e., write your program for *humans*), but you get a
result
>  > >that's good for the *machine* anyway. There's a
tradeoff, though not a
>  > >big one, nevertheless how you lean depends on whether you have a
>  > > greater need to pander to people or to the machine. When
you're
>  > > working in a team
>  > >of ten or twenty, on 2 million lines of code (as I am), the
people
>  > >issues
>  > >matter a *lot*.
>  >
>  > This is one thing I've never really understood. The assumption
that C is
>  > more user friendly, and easier to read than asm. I don't get it.
>  >
>  > MOV, ADD, SUB, RRC, RLA, MAC, MPY, DIV, BIC, BIS, BSET, DECSZ etc
>  > are all very common abbreviations across a wide range of
microprocessors
>  > and controllers, and are easily understood. at least as easily as
LTOA,
>  > ? /R, /N, ^=, &, &&, FLOOR, PRAGMA, MALLOC, CALLOC, * (*)
AND ALL ITS
>  > VARIATIONS.
>  >
>  > Both are equally crytpic, and both are easily understandable. C
contains
>  > far more nonalphanumeric symbols, which complicates things, but the
>  > consequences and actions of any 'instruction' are more
'wdiespread, it
>  > does more, which can be both a blessing and a hindrance.
>  >
>  > asm uses few symbols, few instructions and each instruction does just
>  > one clearly defined thing, with possible actiosn associated with it
such
>  > as flag setting. It is therefore less to learn, easier to grasp, but
>  > requires more instructions per high level task usually..
>  >
>  > I don't see that one is more easily read by humans than the
other
>  > though. Either can be made illegible, and either can be made
readable.
>  > being more voluble isn't necessary being more readable. I cannot
>  > remember the long convolluted names so beloved of C++ pogrammers
for
>  > example, which makes debugging much harder, whereas it is easy to
store
>  > a chain of well thought out short function names as used by C(as I
write
>  > it) and asm
>  >
>  > Al
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  >
>  > .
>  >
>  >
>  > .

FORTH uses an entirely different structure and notation to either asm or C.

I don't use macros either, if you've watched my posts at all
you'll find 
that I rarely if ever use them. That isn't to say that use of macros 
isn't use of assembler, most modern assemblers are called MACRO ASSEMBLERS.

Firstly this is asm, I don't need to declare anything in the formal 
manner required by C. For structures that need to be initialised I can 
either do what you might do in C, run a function that calculates their 
values, and intialises them, or initalise them from a table in FLASH. 
This assumes that they are volatile of course. Otherwise I just 
initlaise them in a flash table.To allocate the structure I can simply 
allocate the memory, naming the flelds in my allocation, then further 
reserving enough memory to allow the maximum number of structures. In 
fact I can do better. I can allocate N structures of M bytes, and, if 
this overflows memory I can easily arrange to temporarily store some of 
the tables in my flash data base. C can't do that without a lot of work. 
Rather than waste memory I can re-use the same block of memory over and 
over again, with different local structures if I need them. But the 
tendency in asm is probably to not use this method as much as you might 
in C, but to micromanage memory a bit better by using alternative methods.

as to memory allocation, well this is THE most asked question by C 
programmers in this, and other forums. "How do I fix the address of a 
variable", or "How to I reserve a register". The answer to the
first 
seems to vary a little between compilers, the answer in asm is simply by 
using EQU or DS when naming the variable, the answer in C to the secodn 
is that usually you can't, unless the compiler vendor allows you 1 or 2 
registers, while in asm I have total control of my register allocation.

If I wanted to, in asm I could do...     MOV   R4,&0213H.

Of course this is fraught with danger, since there is no indication to 
me whether or not the target RAM address is really in RAM for this 
micro, is meant to be a word (of course not, since these are even 
boundaries), so I couldn't readily spot the fact that it should be a 
MOV.B. It will assemble fine, and run, but not the way you might expect 
it to. Notice the total lack of a declaration.

I could also use:-

THISVAR      EQU      0213H

But again when I see     

             MOV      R4,&THISVAR

There's nothing to tell me it should be a byte access.

Then I could use the form:-
       
                   ORG         RAMSTART

HEAP            DS         512                           ;RESERVE 512 
BYTES FOR LOCAL STRUCTURES
THISVAR      DS         2                              ;RESERVE 2 BYTES 
FOR ANY OLD VARIABLE

Now I have explicitly defined THISVAR as using 2 bytes, and my MOV will 
be correct, because the RAM allocation occurs at an even address.

Now I CAN access it as either a pair of bytes, or a word, but it's 
default is word. again this is something easier to do in asm than C. I 
have absolute control in asm of ALL my memory. the downside is that I 
have to be aware of this when programming, and make sure I do control 
it. In C you don't need to worry about this, it's taken care of for
you, 
at the cost of a little flexibility.

Now asm by its very nature tends to be global. You can use local and 
extern, public, etc but that is an individual choice. I simply don't 
like constraints that I don't impose myself.

Al

alex@alex... wrote:

>Al,
>How do you declare, initialize and mange a structure in ASM. Or Memory
>allocation?
>If R going to mention MACROS, then you are not using ASM anymore :)
>ASM is like Latin. It's good in it's own Church and for it's
own followers
>:)
>Alex
>
>BTW.
>One can find a neutral ground between ASM and any other high level language
>by simply using FORTH :)
>A
>
>----- Original Message ----- 
>From: "Onestone" <onestone@ones...>
>To: <msp430@msp4...>
>Sent: Wednesday, August 17, 2005 9:38 PM
>Subject: Re: [msp430] Re: Interrupt occurs in ISR A
>
>
>  
>
>>Hi again, just one last thing before I let this thread go for good
>>
>>Clifford Heath wrote:
>>
>>    
>>
>>>Of course, but a good global optimiser will produce excellent code
in
>>>
>>>almost any case. And that's the point - you're free to
express yourself
>>>in code (i.e., write your program for *humans*), but you get a
result
>>>that's good for the *machine* anyway. There's a tradeoff,
though not a
>>>big one, nevertheless how you lean depends on whether you have a
greater
>>>need to pander to people or to the machine. When you're working
in a
>>>team
>>>of ten or twenty, on 2 million lines of code (as I am), the people
>>>issues
>>>matter a *lot*.
>>>
>>>
>>>      
>>>
>>This is one thing I've never really understood. The assumption that
C is
>>more user friendly, and easier to read than asm. I don't get it.
>>
>>    MOV, ADD, SUB, RRC, RLA, MAC, MPY, DIV, BIC, BIS, BSET, DECSZ etc
>>are all very common abbreviations across a wide range of microprocessors
>>and controllers, and are easily understood. at least as easily as LTOA,
>>? /R, /N, ^=, &, &&, FLOOR, PRAGMA, MALLOC, CALLOC, * (*)
AND ALL ITS
>>VARIATIONS.
>>
>>Both are equally crytpic, and both are easily understandable. C contains
>>far more nonalphanumeric symbols, which complicates things, but the
>>consequences and actions of any 'instruction' are more
'wdiespread, it
>>does more, which can be both a blessing and a hindrance.
>>
>>asm uses few symbols, few instructions and each instruction does just
>>one clearly defined thing, with possible actiosn associated with it such
>>as flag setting. It is therefore less to learn, easier to grasp, but
>>requires more instructions per high level task usually..
>>
>>I don't see that one is more easily read by humans than the other
>>though. Either can be made illegible, and either can be made readable.
>>being more voluble isn't necessary being more readable. I cannot
>>remember the long convolluted names so beloved of C++ pogrammers for
>>example, which makes debugging much harder, whereas it is easy to store
>>a chain of well thought out short function names as used by C(as I write
>>it) and asm
>>
>>Al
>>
>>    
>>
>>>
>>>
>>>      
>>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>---
>>avast! Antivirus: Inbound message clean.
>>Virus Database (VPS): 0533-3, 08/17/2005
>>Tested on: 8/17/2005 10:42:36 PM
>>avast! - copyright (c) 1988-2005 ALWIL Software.
>>http://www.avast.com
>>
>>
>>
>>    
>>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>  
>


Yes Al, but like the baker that can't smell his own bread, you are not
observing how much more work you do in ASM.
High Level Languages are doing all that time consuming management work for
you :)

I am not trying you convert you Al :)

Alex


----- Original Message ----- 
From: "Onestone" <onestone@ones...>
To: <msp430@msp4...>
Sent: Thursday, August 18, 2005 12:28 AM
Subject: Re: [msp430] Re: Interrupt occurs in ISR A


FORTH uses an entirely different structure and notation to either asm or C.

I don't use macros either, if you've watched my posts at all
you'll find
that I rarely if ever use them. That isn't to say that use of macros
isn't use of assembler, most modern assemblers are called MACRO ASSEMBLERS.

Firstly this is asm, I don't need to declare anything in the formal
manner required by C. For structures that need to be initialised I can
either do what you might do in C, run a function that calculates their
values, and intialises them, or initalise them from a table in FLASH.
This assumes that they are volatile of course. Otherwise I just
initlaise them in a flash table.To allocate the structure I can simply
allocate the memory, naming the flelds in my allocation, then further
reserving enough memory to allow the maximum number of structures. In
fact I can do better. I can allocate N structures of M bytes, and, if
this overflows memory I can easily arrange to temporarily store some of
the tables in my flash data base. C can't do that without a lot of work.
Rather than waste memory I can re-use the same block of memory over and
over again, with different local structures if I need them. But the
tendency in asm is probably to not use this method as much as you might
in C, but to micromanage memory a bit better by using alternative methods.

as to memory allocation, well this is THE most asked question by C
programmers in this, and other forums. "How do I fix the address of a
variable", or "How to I reserve a register". The answer to the
first
seems to vary a little between compilers, the answer in asm is simply by
using EQU or DS when naming the variable, the answer in C to the secodn
is that usually you can't, unless the compiler vendor allows you 1 or 2
registers, while in asm I have total control of my register allocation.

If I wanted to, in asm I could do...     MOV   R4,&0213H.

Of course this is fraught with danger, since there is no indication to
me whether or not the target RAM address is really in RAM for this
micro, is meant to be a word (of course not, since these are even
boundaries), so I couldn't readily spot the fact that it should be a
MOV.B. It will assemble fine, and run, but not the way you might expect
it to. Notice the total lack of a declaration.

I could also use:-

THISVAR      EQU      0213H

But again when I see

             MOV      R4,&THISVAR

There's nothing to tell me it should be a byte access.

Then I could use the form:-

                   ORG         RAMSTART

HEAP            DS         512                           ;RESERVE 512
BYTES FOR LOCAL STRUCTURES
THISVAR      DS         2                              ;RESERVE 2 BYTES
FOR ANY OLD VARIABLE

Now I have explicitly defined THISVAR as using 2 bytes, and my MOV will
be correct, because the RAM allocation occurs at an even address.

Now I CAN access it as either a pair of bytes, or a word, but it's
default is word. again this is something easier to do in asm than C. I
have absolute control in asm of ALL my memory. the downside is that I
have to be aware of this when programming, and make sure I do control
it. In C you don't need to worry about this, it's taken care of for
you,
at the cost of a little flexibility.

Now asm by its very nature tends to be global. You can use local and
extern, public, etc but that is an individual choice. I simply don't
like constraints that I don't impose myself.

Al

alex@alex... wrote:

>Al,
>How do you declare, initialize and mange a structure in ASM. Or Memory
>allocation?
>If R going to mention MACROS, then you are not using ASM anymore :)
>ASM is like Latin. It's good in it's own Church and for it's
own followers
>:)
>Alex
>
>BTW.
>One can find a neutral ground between ASM and any other high level language
>by simply using FORTH :)
>A
>
>----- Original Message ----- 
>From: "Onestone" <onestone@ones...>
>To: <msp430@msp4...>
>Sent: Wednesday, August 17, 2005 9:38 PM
>Subject: Re: [msp430] Re: Interrupt occurs in ISR A
>
>
>
>
>>Hi again, just one last thing before I let this thread go for good
>>
>>Clifford Heath wrote:
>>
>>
>>
>>>Of course, but a good global optimiser will produce excellent code
in
>>>
>>>almost any case. And that's the point - you're free to
express yourself
>>>in code (i.e., write your program for *humans*), but you get a
result
>>>that's good for the *machine* anyway. There's a tradeoff,
though not a
>>>big one, nevertheless how you lean depends on whether you have a
greater
>>>need to pander to people or to the machine. When you're working
in a
>>>team
>>>of ten or twenty, on 2 million lines of code (as I am), the people
>>>issues
>>>matter a *lot*.
>>>
>>>
>>>
>>>
>>This is one thing I've never really understood. The assumption that
C is
>>more user friendly, and easier to read than asm. I don't get it.
>>
>>    MOV, ADD, SUB, RRC, RLA, MAC, MPY, DIV, BIC, BIS, BSET, DECSZ etc
>>are all very common abbreviations across a wide range of microprocessors
>>and controllers, and are easily understood. at least as easily as LTOA,
>>? /R, /N, ^=, &, &&, FLOOR, PRAGMA, MALLOC, CALLOC, * (*)
AND ALL ITS
>>VARIATIONS.
>>
>>Both are equally crytpic, and both are easily understandable. C contains
>>far more nonalphanumeric symbols, which complicates things, but the
>>consequences and actions of any 'instruction' are more
'wdiespread, it
>>does more, which can be both a blessing and a hindrance.
>>
>>asm uses few symbols, few instructions and each instruction does just
>>one clearly defined thing, with possible actiosn associated with it such
>>as flag setting. It is therefore less to learn, easier to grasp, but
>>requires more instructions per high level task usually..
>>
>>I don't see that one is more easily read by humans than the other
>>though. Either can be made illegible, and either can be made readable.
>>being more voluble isn't necessary being more readable. I cannot
>>remember the long convolluted names so beloved of C++ pogrammers for
>>example, which makes debugging much harder, whereas it is easy to store
>>a chain of well thought out short function names as used by C(as I write
>>it) and asm
>>
>>Al
>>
>>
>>
>>>
>>>
>>>
>>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>---
>>avast! Antivirus: Inbound message clean.
>>Virus Database (VPS): 0533-3, 08/17/2005
>>Tested on: 8/17/2005 10:42:36 PM
>>avast! - copyright (c) 1988-2005 ALWIL Software.
>>http://www.avast.com
>>
>>
>>
>>
>>
>
>
>
>
>.
>
>
>Yahoo! Groups Links
>
>
>
>
>
>
>
>
>
>




.


Yahoo! Groups Links










---
avast! Antivirus: Inbound message clean.
Virus Database (VPS): 0533-3, 08/17/2005
Tested on: 8/18/2005 8:49:30 AM
avast! - copyright (c) 1988-2005 ALWIL Software.
http://www.avast.com