why my 7-segment display can't work properly???

J0 VAR BYTE
J1 VAR BYTE
J2 VAR BYTE
J3 VAR BYTE
K VAR BYTE
K0 VAR BYTE
K1 VAR BYTE
K2 VAR BYTE
k3 VAR BYTE
digit VAR BYTE
pattern var byte
I VAR WORD

I = 0
TRISA = 0
TRISB = 0
INTCON = %00100000
OPTION_REG = %00000111
TMR0 = 255
ON INTERRUPT GOTO ISR
INTCON = %10100000

MAIN:

I = 0

LOOP1:

J0 = I // 10
digit = J0
GOSUB DISPLAY
K0 = pattern

J1 = (I / 10)//10
digit = J1
GOSUB DISPLAY
K1 = pattern

J2 = (I / 100)//10
digit = J2
GOSUB DISPLAY
K2 = pattern

J3 = (I / 1000)//10
digit = J3
GOSUB DISPLAY
K3 = pattern

PAUSE 1000
IF I = 9999 THEN MAIN
I = i + 1
GOTO LOOP1

DISABLE
ISR:
TMR0 = 255

K = K + 1
IF K > 3 THEN
K = 0
ENDIF

SELECT CASE K
CASE 0
PORTA = %00000001
PORTB = k0

CASE 1
PORTA = %00000010
PORTB = K1

CASE 2
PORTA = %00000100
PORTB = K2

CASE 3
PORTA = %00001000
PORTB = K3
END SELECT

INTCON.2 = 0
RESUME
ENABLE

DISPLAY:

LOOKUP Digit, [$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $6F], Pattern
Pattern = Pattern ^ $FF
RETURN
END