41 lines
		
	
	
	
		
			469 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			41 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
 |