Look at the subroutine sequence. You will see that the first time it is called, it is checking bit 7 of mode_byte. Presumably, this is to determine if this is the first time sequence is being called by the Loop, or not.
So if mode_byte 7 is clear, this subroutine clears counter_hi, which determines where pattern starts its "cycle." And it clears counter_lo, which determines when sequence progresses to the next point (the first time, at least). And it sets bit 7 of mode_byte, so that the next time it gets called, it will not repeat these steps. Then, when sequence has been completed, bit 7 of modebyte is cleared. So it is ready to start over. Apparently, it continues until credit_count is zero. This must occur in one of the other active subroutines.
Now, the problem here is that sequence, along with every single other subroutine which takes any significant amount of time, is not performed in one shot from beginning to end when it is called. Only one tiny slice of sequence gets performed on each cycle of Loop.* It will perform the same thing 256 times (as determined by counter_lo), before it progresses to the line in pattern. So counter_lo determines the speed that the LEDs change.
*You know this, automatically, because there is no interrupt routines (and the chip probably doesn't even have this feature). In order to keep the 7 segment displays refreshed, no subroutine may hold the program counter hostage for any significant amount of time, unless the 7 segment displays are either all off or displaying the same thing.
So while sequence is being executed, other things are also being executed. Some other part of the code might be setting bit 5 of modebyte to kill/hold sequence. Presumably if modebyte 5 is set at any other place in the code, bit 7 would also be cleared to "reset" sequence so it starts at the beginning next time. But maybe this has been missed, or maybe the authors prefer it to start at a random location. Who knows, maybe they use some of these registers as part of the random number generator. Or... to beat an old drum, here, there may be a bad memory share/handling regarding counter_hi.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sequence
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;if mode_byte,5 is cleared, these subroutines are called by Loop
;sequence
;random
;flash
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
clrf fsr
btfsc mode_byte,7 ;TEST 'IN PROGRESS' BIT
goto sequence1
clrf counter_hi
clrf counter_lo
bsf mode_byte,7 ;SET 'IN PROGRESS' BIT
sequence1
bsf counter_lo,7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; incf counter_lo,f
; btfss status,zer
incfsz counter_lo,f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
retlw .0
incf counter_hi,f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;insert this code
movlw .1
btfsc counter_hi,4
xorwf new_byte,f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bcf counter_hi,4 ;this must go back to the original bcf counter_hi,4
movf credit_count,f
btfsc status,zer
retlw .0
bcf mode_byte,7
bcf mode_byte,5
bsf mode_byte,0
retlw .0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;