Presumably "BYTE" is a typedef-name or #define for some integral
type (int, char, unsigned long, whatever).
If so, why is there a cast here?
Presumably BOOL is another typedef-name or #define for some integral
type, again. If PortWrite needs a "BYTE" (int, unsigned char, whatever),
passing the address of an object ("BYTE Byte = 0x41" then "&Byte")
is probably not right. Another clue that there is something wrong
is that the call contains a cast, to change the value produced by
&Byte into a new value of whatever type the name BYTE stands for.
Impossible to say for certain, but if you have a BYTE object and
PortWrite() demands a BYTE value, it is more likely to work right
if you pass the object's value, rather than its address.
Your question concerns a non-standard extension to C and is thus
off-topic on comp.lang.c. Please ask in a newsgroup dedicated to your
own OS.
This may also be (part of) the problem, but -- as shown above --
there is a Standard C issue that can be addressed here as well.
As usual, code with casts is suspicious at best. Always take a
second look at casts -- there is a significant chance that, if some
piece of code requires a cast to compile without a warning, that
piece of code is wrong.