.define .inn
.sect .text
.sect .rom
.sect .data
.sect .bss
! use .unimpld
! any size sets
! parameters:
! hl: size
! stack: bit number
! stack: result (out)
.inn:
pop ix
pop de
add hl,sp
ld b,h
ld c,l
ex de,hl
ld a,l
sra h
jp m,0f
rr l
push hl
or a ! clear carry
sbc hl,de
pop hl
jp m,1f
0: xor a
jr 4f
1: ld e,(hl)
and 7
jr 2f
3: rrc e
dec a
2: jr nz,3b
ld a,e
and 1
4:
ld e,a
ld d,0
ld h,b
ld l,c
ld sp,hl
push de
jp (ix)