
ORG 0003h               ; vector IE0 - INT0
        PUSH    ACC
        PUSH    PSW
        SJMP    EN1     
;(...)

EN1:
        MOV     A,E1P   ; P0 or P2 - pick current values
        JB      P,E1_L1 ; Sanity Check - odd number of bits set
        INC     EB1     ; error counter, diagnostics.
        POP     PSW
        POP     ACC
        RETI            ; False alarm
E1_L1:  
        MOV     PSW,#098h       ; bank 3, rest insignificant
        JB      E1DIR,INC_E1    ; B XOR A' i.e. on P3.0 
;DEC_E1:
        DEC     R3
        CJNE    R3,#0FFh,E1_L2  ; Underflow, DEC16bit
        DEC     R2
        SJMP    E1_L2
INC_E1:
        INC     R3
        CJNE    R3,#00,E1_L2
        INC     R2
E1_L2:  SETB    TAINT1          ; Set Taint Bit
        RL      A               ; 
        RL      A               ; B'=B, A'=A, B=0, A=0
        ORL     A,#03h          ; allow read of A,B
        MOV     E1P,A
        POP     PSW
        POP     ACC
        RETI
