on a binairy level, both values have the same bitmap presentation
(the large one in unsigned, the small one in signed)
the large value is not *changed* into a negative, but the variable is displayed and used by pb as a negative, ie. its storage in memory doesn't change
as the presentation in memory doesn't change, that means that, during a comparison, purebasic does something with it, probably converting it to a long on the fly
a.w = $8102
b.w = -32510
#c = $8102
if a = b now results in a true condition, as both are in unsigned hex $00008102 or in signed dec -32510
if a = #c is not resulting true because it's appearently converting the signed word -32510 into a signed long, while the constant fits in a signed long with converting
the assembly guru's amongst us migth confirm that it's actually comparing two longs instead of two words? or does it compare two words if both expressions left and right are words?
perhaps now i've made myself more clear
though i dount that