> Because: > goto $ ; this is a continuous loop, hence > goto $-1 ; jumps to btfss port,anotherbit > goto $-2 ; jumps to goto action > goto $-3 ; jumps to btfsc port,bit > > So there! ;-) If the character following a "$" is in the set [0-9A-Fa-f] then the dollar sign and all succeeding alphanumerics form a hex number (if some of the succeeding alphanumerics are in the range [G-Zg-z] then the code contains a syntax error). It's somewhat harder to allow "%" for binary and "&" for octal (they aren't nearly as universal anyway) but those can be done without ambiguity: if either of those characters is encountered at a place where a digit could legally appear, it's a radix specifier; otherwise it's either an operator or a syntax error.