Well, I can't offer any suggestions for fixing what you have, other than CTRL-A/DEL. 
Give this a try with HyperTerminal or equivalent @ 19200 baud.
I'm assuming it's a 16F877.
Code:
<font color="#008000"><b>CLEAR </b></font><font color="#0000FF"><b><i>' Clear all User RAM
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>OSC </b><font color="#800000"><b>8 </b></font><font color="#0000FF"><b><i>' change to match your crystal
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>LOADER_USED </b><font color="#800000"><b>1 </b></font><font color="#0000FF"><b><i>' if using a bootloader
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>HSER_BAUD </b><font color="#800000"><b>19200 </b></font><font color="#0000FF"><b><i>' Hser baud rate
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>HSER_CLROERR </b><font color="#800000"><b>1 </b></font><font color="#0000FF"><b><i>' Hser clear overflow automatically
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>HSER_RCSTA </b><font color="#800000"><b>90</b></font><b>h </b><font color="#0000FF"><b><i>' Hser receive status init
</i></b></font><font color="#008000"><b>DEFINE </b></font><b>HSER_TXSTA </b><font color="#800000"><b>24</b></font><b>h </b><font color="#0000FF"><b><i>' Hser transmit status init
</i></b></font><b>B </b><font color="#008000"><b>VAR BYTE
</b></font><b>LastB </b><font color="#008000"><b>VAR BYTE </b></font><font color="#0000FF"><b><i>' state of pins Last time they changed
</i></b></font><b>Diff </b><font color="#008000"><b>VAR BYTE </b></font><font color="#0000FF"><b><i>' Difference tween Last and Current bits
</i></b></font><b>Active </b><font color="#008000"><b>VAR BYTE </b></font><font color="#0000FF"><b><i>' Indicates which inputs are active(LOW)
</i></b></font><b>Idx </b><font color="#008000"><b>VAR BYTE </b></font><font color="#0000FF"><b><i>' generic loop counter
</i></b></font><b>Counter </b><font color="#008000"><b>VAR WORD</b></font>[<font color="#800000"><b>4</b></font>] <font color="#0000FF"><b><i>' The values of the counters
</i></b></font><b>OPTION_REG</b>.<font color="#800000"><b>7 </b></font>= <font color="#800000"><b>0 </b></font><font color="#0000FF"><b><i>' enable PORTB pull-ups
;---[clear screen + display menu]-------------------------------------------
</i></b></font><b>Refresh</b>:
<font color="#008000"><b>HSEROUT </b></font>[<font color="#800000"><b>27</b></font>,<font color="#FF0000">"[2J"</font>,<font color="#800000"><b>10</b></font>,<font color="#800000"><b>10</b></font>,<font color="#800000"><b>10</b></font>,<font color="#800000"><b>10</b></font>,<font color="#800000"><b>10</b></font>,<font color="#800000"><b>10</b></font>, <b>_
</b><font color="#FF0000">" A=clear All, (1-4)=Clear Counter#, R=Refresh screen"</font>]
<font color="#008000"><b>GOTO </b></font><b>DisplayCounters
Main</b>:
<font color="#0000FF"><b><i>;---[Handle incoming serial data]---------------------------------------
</i></b></font><font color="#008000"><b>IF </b></font><b>PIR1</b>.<font color="#800000"><b>5 </b></font><font color="#008000"><b>THEN </b></font><font color="#0000FF"><b><i>' If serial data has been received
</i></b></font><font color="#008000"><b>HSERIN </b></font>[<b>Idx</b>] <font color="#0000FF"><b><i>' get the byte
</i></b></font><font color="#008000"><b>SELECT CASE </b></font><b>Idx </b><font color="#0000FF"><b><i>' What did we receive?
</i></b></font><font color="#008000"><b>CASE </b></font><font color="#FF0000">"A"</font>,<font color="#FF0000">"a" </font><font color="#0000FF"><b><i>' A - Clear all counters
</i></b></font><font color="#008000"><b>FOR </b></font><b>Idx </b>= <font color="#800000"><b>0 </b></font><font color="#008000"><b>TO </b></font><font color="#800000"><b>3
</b></font><b>Counter</b>(<b>Idx</b>) = <font color="#800000"><b>0
</b></font><font color="#008000"><b>NEXT </b></font><b>Idx
</b><font color="#008000"><b>GOTO </b></font><b>DisplayCounters
</b><font color="#008000"><b>CASE </b></font><font color="#FF0000">"R"</font>,<font color="#FF0000">"r" </font><font color="#0000FF"><b><i>' Refresh ANSI Terminal screen
</i></b></font><font color="#008000"><b>GOTO </b></font><b>Refresh
</b><font color="#008000"><b>CASE </b></font><font color="#FF0000">"1"</font>,<font color="#FF0000">"2"</font>,<font color="#FF0000">"3"</font>,<font color="#FF0000">"4" </font><font color="#0000FF"><b><i>' numbers clear that counter only
</i></b></font><b>Counter</b>(<b>Idx </b>- <font color="#FF0000">"1"</font>) = <font color="#800000"><b>0
</b></font><font color="#008000"><b>GOTO </b></font><b>DisplayCounters
</b><font color="#008000"><b>CASE ELSE
HSEROUT </b></font>[<font color="#800000"><b>8</b></font>,<font color="#800000"><b>7</b></font>] <font color="#0000FF"><b><i>' send backspace + bell
</i></b></font><font color="#008000"><b>END SELECT
ENDIF
</b></font><font color="#0000FF"><b><i>'---[Count Pulses]------------------------------------------------------
</i></b></font><b>B </b>= <b>PORTB </b>& <font color="#800000"><b>$F0 </b></font><font color="#0000FF"><b><i>' isolate upper 4-bits
</i></b></font><b>Diff </b>= <b>B </b>^ <b>LastB </b><font color="#0000FF"><b><i>' see if any of them changed
</i></b></font><font color="#008000"><b>IF </b></font><b>Diff </b>!= <font color="#800000"><b>0 </b></font><font color="#008000"><b>THEN </b></font><font color="#0000FF"><b><i>' if any of them changed
</i></b></font><b>LastB </b>= <b>B
Active </b>= <b>Diff </b>& ~<b>B </b><font color="#0000FF"><b><i>' determine which ones are Active
</i></b></font><font color="#008000"><b>IF </b></font><b>Active </b>!= <font color="#800000"><b>0 </b></font><font color="#008000"><b>THEN
IF </b></font><b>Active</b>.<font color="#800000"><b>4 </b></font><font color="#008000"><b>THEN </b></font><b>Counter</b>(<font color="#800000"><b>0</b></font>) = <b>Counter</b>(<font color="#800000"><b>0</b></font>) + <font color="#800000"><b>1 </b></font><font color="#0000FF"><b><i>' increment actives
</i></b></font><font color="#008000"><b>IF </b></font><b>Active</b>.<font color="#800000"><b>5 </b></font><font color="#008000"><b>THEN </b></font><b>Counter</b>(<font color="#800000"><b>1</b></font>) = <b>Counter</b>(<font color="#800000"><b>1</b></font>) + <font color="#800000"><b>1
</b></font><font color="#008000"><b>IF </b></font><b>Active</b>.<font color="#800000"><b>6 </b></font><font color="#008000"><b>THEN </b></font><b>Counter</b>(<font color="#800000"><b>2</b></font>) = <b>Counter</b>(<font color="#800000"><b>2</b></font>) + <font color="#800000"><b>1
</b></font><font color="#008000"><b>IF </b></font><b>Active</b>.<font color="#800000"><b>7 </b></font><font color="#008000"><b>THEN </b></font><b>Counter</b>(<font color="#800000"><b>3</b></font>) = <b>Counter</b>(<font color="#800000"><b>3</b></font>) + <font color="#800000"><b>1
</b></font><font color="#008000"><b>GOTO </b></font><b>DisplayCounters
</b><font color="#008000"><b>ENDIF
ENDIF
PAUSE </b></font><font color="#800000"><b>20
</b></font><font color="#008000"><b>GOTO </b></font><b>Main
</b><font color="#0000FF"><b><i>'--[Display Counter Values]-------------------------------------------------
</i></b></font><b>DisplayCounters</b>:
<font color="#008000"><b>HSEROUT </b></font>[<font color="#800000"><b>27</b></font>,<font color="#FF0000">"[H"</font>] <font color="#0000FF"><b><i>' home cursor (ANSI)
</i></b></font><font color="#008000"><b>FOR </b></font><b>Idx </b>= <font color="#800000"><b>0 </b></font><font color="#008000"><b>TO </b></font><font color="#800000"><b>3 </b></font><font color="#0000FF"><b><i>' display all counter values
</i></b></font><font color="#008000"><b>HSEROUT</b></font>[<font color="#008000"><b>DEC </b></font>(<b>Idx</b>+<font color="#800000"><b>1</b></font>),<font color="#FF0000">": "</font>,<font color="#008000"><b>DEC5 </b></font><b>Counter</b>(<b>Idx</b>),<font color="#800000"><b>13</b></font>,<font color="#800000"><b>10</b></font>]
<font color="#008000"><b>NEXT </b></font><b>Idx
</b><font color="#008000"><b>HSEROUT </b></font>[<font color="#800000"><b>13</b></font>,<font color="#800000"><b>10</b></font>]
<font color="#008000"><b>GOTO </b></font><b>Main
</b>
Cheers,
Bookmarks