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
 |