40 lines
		
	
	
	
		
			542 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			542 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define Ror4
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
.sect .text
 | 
						|
 | 
						|
! This subroutine rotates right a fourbyte word.
 | 
						|
! The number of rotates is in X.
 | 
						|
 | 
						|
 | 
						|
Ror4:
 | 
						|
	txa
 | 
						|
	bne 1f		! a zero rotate skip
 | 
						|
	rts
 | 
						|
    1:	tay
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH
 | 
						|
	sta ARTH+1
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH+2
 | 
						|
	sta ARTH+3
 | 
						|
    2:	lsr ARTH+3	! rotate word
 | 
						|
	ror ARTH+2
 | 
						|
	ror ARTH+1
 | 
						|
	ror ARTH
 | 
						|
	bcc 1f		! no carry
 | 
						|
	lda #0x80	! put carry in leftmost bit
 | 
						|
	ora ARTH+3
 | 
						|
	sta ARTH+3
 | 
						|
    1:	dey
 | 
						|
	bne 2b
 | 
						|
	lda ARTH+3
 | 
						|
	ldx ARTH+2
 | 
						|
	jsr Push
 | 
						|
	lda ARTH+1
 | 
						|
	ldx ARTH
 | 
						|
	jmp Push	! push result onto the stack
 | 
						|
 | 
						|
 |