42 lines
469 B
ArmAsm
42 lines
469 B
ArmAsm
.define .set2
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
|
|
! Create 16 bits set with one bit on
|
|
! Expects in de-reg: bit number
|
|
! Yields in de-reg: resulting set
|
|
|
|
.set2: mov a,d !trap if bit number >= 16
|
|
ora a
|
|
cnz eset
|
|
mov a,e
|
|
cpi 16
|
|
cnc eset
|
|
|
|
pop h
|
|
shld .retadr
|
|
mov a,e
|
|
ani 7
|
|
mov d,a
|
|
mvi a,1
|
|
1: dcr d
|
|
jm 2f
|
|
rlc
|
|
jmp 1b
|
|
2: mov d,a
|
|
mov a,e
|
|
ani 8
|
|
jnz 3f ! jump if bit 3 is set
|
|
|
|
mov e,d
|
|
mvi d,0
|
|
jmp 4f
|
|
|
|
3: mvi e,0
|
|
|
|
4: lhld .retadr
|
|
pchl
|