PIC16F877A only has IOC on RB4-7. Your button on RB0 is *NOT* on an IOC capable pin (though it is on an INT pin).
Also, Microchip's older 8 bit PICs' IOC implementation is known to be buggy! BEWARE of the
RACE CONDITION!
You must read the whole port
* with the active IOC pins, and attempt to clear its IOC interrupt flag at the beginning of your ISR immediately after confirming the interrupt source, and store the port value for the ISR to decode. DO NOT re-read the port later on in the ISR or read it in your main program (apart from ONCE immediately before enabling GIE) or you *WILL* loose some interrupts.
The remaining port B pins can be safely used as outputs, but only if you write the *whole* port without using an instruction that performs a RMW (read modify write) operation. *DO* *NOT* attempt direct use of individual pins of the port.
* Due to the race condition bug, you must use a very specific sequence to read the port and clear the IOC interrupt flag without missing pin transitions. See RACE CONDITION link above.