Clearly, but that would leave me with, ...with, ..................ASSEMBLER!
No it wouldn't... take this thread topic as an example...

First here's a couple of defines...
Code:
	MyButton var PortB.0
	ButtonTemp var Byte
Now check this code...
Code:
	ButtonTemp=0
	BUTTON MyButton,0,255,0,ButtonTemp,1,ExecuteButton
Look at the above code... it's almost the same as...
Code:
	IF MyButton=0 then
		Pause 10
		Goto ExecuteButton
		Endif
The salient difference is that the example with the IF statement doesn't require a dummy variable for it's exclusive use.

Compile both examples... tell me which one uses more codespace? Both exclusively use PBP, neither uses any Assembler.

When I say "Learn how to access and manipulate PICs Registers", - you're probably already doing it. To disable Comparators on may PICs you need to set...
Code:
	CMCON=7
Well, that statement has preset the CMCON register with a value of 7 (ie CMCON=%00000111). So now, what's so difficult about dropping a byte into the appropriate USART Register instead of using HSEROUT?