1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- FlagActionPredef:
- call GetPredefRegisters
- FlagAction:
- ; Perform action b on bit c
- ; in the bitfield at hl.
- ; 0: reset
- ; 1: set
- ; 2: read
- ; Return the result in c.
- push hl
- push de
- push bc
- ; bit
- ld a, c
- ld d, a
- and 7
- ld e, a
- ; byte
- ld a, d
- srl a
- srl a
- srl a
- add l
- ld l, a
- jr nc, .ok
- inc h
- .ok
- ; d = 1 << e (bitmask)
- inc e
- ld d, 1
- .shift
- dec e
- jr z, .shifted
- sla d
- jr .shift
- .shifted
- ld a, b
- and a
- jr z, .reset
- cp 2
- jr z, .read
- .set
- ld b, [hl]
- ld a, d
- or b
- ld [hl], a
- jr .done
- .reset
- ld b, [hl]
- ld a, d
- xor $ff
- and b
- ld [hl], a
- jr .done
- .read
- ld b, [hl]
- ld a, d
- and b
- .done
- pop bc
- pop de
- pop hl
- ld c, a
- ret
|