56 lines
515 B
ArmAsm
56 lines
515 B
ArmAsm
.define .inn
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
! 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
|
|
sra h
|
|
rr l
|
|
sra h
|
|
rr l
|
|
add hl,sp
|
|
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)
|