46 lines
449 B
ArmAsm
46 lines
449 B
ArmAsm
.define .set
|
|
! use .unimpld
|
|
|
|
! any size sets
|
|
! parameters:
|
|
! hl: size
|
|
! stack: bitnumber
|
|
! stack: result (out)
|
|
|
|
|
|
|
|
.set:
|
|
pop ix ! return address
|
|
pop de ! bit number
|
|
ld b,h
|
|
ld c,l
|
|
xor a
|
|
0: push af
|
|
inc sp
|
|
dec c
|
|
jr nz,0b
|
|
dec b
|
|
jp p,0b
|
|
ex de,hl
|
|
ld a,l
|
|
sra h
|
|
jp m,.unimpld
|
|
rr l
|
|
srl h
|
|
rr l
|
|
srl h
|
|
rr l
|
|
push hl
|
|
or a
|
|
sbc hl,de
|
|
pop hl
|
|
jp p,.unimpld
|
|
add hl,sp
|
|
ld (hl),1
|
|
and 7
|
|
jr 1f
|
|
0: sla (hl)
|
|
dec a
|
|
1: jr nz,0b
|
|
jp (ix)
|