30 lines
		
	
	
	
		
			503 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			503 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define Ror
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| 
 | |
| ! This subroutine rotates right a integer twobyte word.
 | |
| ! The number of rotates is in X.
 | |
| ! The result is returned in registerpair AX.
 | |
| 
 | |
| 
 | |
| Ror:
 | |
|     	txa
 | |
| 	bne 1f		! a zero rotate just return input
 | |
| 	jmp Pop
 | |
|     1:	tay
 | |
| 	jsr Pop		! get word
 | |
| 	stx Ytmp	! save lowbyte
 | |
|     2:	clc
 | |
| 	ror a		! rotate highbyte
 | |
| 	ror Ytmp	! rotate lowbyte
 | |
| 	bcc 1f		! no carry
 | |
| 	ora #0x80	! put carry in leftmost bit
 | |
|     1:	dey
 | |
| 	bne 2b
 | |
| 	ldx Ytmp	! get lowbyte
 | |
| 	rts
 | |
| 
 | |
| 
 |