
;********************** set bit indirect pointed by acc *****************
;Attention: bit address must be below 80h !
;Input: ACC = bit number 00 ... 7F
;Output: nothing
;Used: R0, ACC
;Cycle: 16
setibit:
        call getibit            ;get mask and address
        orl a, @r0
        mov @r0, a
        ret

clribit:
        call getibit
        cpl a
        anl a, @r0
        mov @r0, a
        ret

cplibit:
        call getibit
        xrl a, @r0
        mov @r0, a
        ret

tstibit:
        call getibit
        anl a, @r0
        add a, #0FFh
        ret

getibit:                        ;get byte address and bit mask
        mov r0, a
        anl a, #78h             ;byte number
        rl a                    ; * 2
        swap a                  ;     / 16  = / 8
        add a, #20h             ;start data bit addressable
        xch a, r0
        anl a, #7               ;bit number
        inc a
        movc a, @a+pc           ;bit mask
        ret
        db 1, 2, 4, 8, 10h, 20h, 40h, 80h
;------------------------------------------------------------------------
