I can turn on any of the ports using realterm and a max232 using the code below.
Code:
     INCLUDE "MODEDEFS.BAS"
;@ DEVICE PIC16F628a,XT_OSC
;@ DEVICE pic16F628a, WDT_OFF
;@ DEVICE pic16F628a, PWRT_ON
;@ DEVICE pic16F628a, MCLR_ON
;@ DEVICE pic16F628a, BOD_ON
;@ DEVICE pic16F628a, LVP_OFF
;@ DEVICE pic16F628a, CPD_OFF
;@ DEVICE pic16F628a, PROTECT_OFF
@MyConfig = _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF 
@MyConfig = MyConfig & _BODEN_OFF 
@ __config  MyConfig
DEFINE OSC 20
CMCON = 7

trisa = %00000010
trisb = %00000000

PORTA = 0
PORTB = 0

MYDATA1  VAR byte
MYDATA2  var byte
address1 var byte
address2 var byte
checksum var byte
chk_sum  var byte
;serpin   VAR PortA.1
PAUSE 50

loop:
high portA.2
pause 500
low portA.2
gosub loop1
serout portA.0,T9600,[254,2,mydata1," ",mydata2,"          "]
serout portA.0,T9600,[$FE,$C0,address1," ",address2,"          " ]
'CheckSum = (address1 + address2)
'CheckSum = CheckSum + (mydata1 + mydata2)
'IF checksum   != chk_sum THEN loop
'IF (mydata1)  != (mydata2) THEN loop
'IF (address1) != (address2) THEN loop

if mydata1= 86 then toggle portB.0


if mydata1= 89 then
'while mydata1 = 89 ' trying this example for debounce
'pause 50
'wend
high PortB.1

else
low PortB.1
endif

if mydata1 = 90 then
'while mydata1 = 90
'pause 50
'wend
high PortB.2

else
low PortB.2
endif

if mydata1= 101 then
'while mydata1 = 101
'pause 50
'wend
high PortB.3

else
low PortB.3
endif

if mydata1 = 102 then
'while mydata1 = 102
'pause 50
'wend
high PortB.4

else
low PortB.4
endif

if mydata1=105 then toggle PortB.5
if mydata1=106 then toggle PortB.6

goto loop

loop1:
SERIN2 PortA.1,84,[DEC address1,DEC ADDRESS2,DEC MYDATA1,DEC MYDATA2]
Return
end
Much stuff just commented out, serouts added so as to see variable contents, a blinky added for life signs, easy to undo. Thanks for sharing your problem, I got to learn too.