32 lines
		
	
	
	
		
			548 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			548 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define Rmi2
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
.sect .text
 | 
						|
 | 
						|
! This subroutine returns the remainder of a twobyte signed division.
 | 
						|
! The sign of the result is as specified in the emtest.
 | 
						|
 | 
						|
 | 
						|
Rmi2:
 | 
						|
	ldy #0
 | 
						|
	sty NBYTES	! for the sign of the result
 | 
						|
	stx ARTH
 | 
						|
	sta ARTH+1	! first operand
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH+2
 | 
						|
	sta ARTH+3	! second operand
 | 
						|
	ldy #0
 | 
						|
	sty UNSIGN	! its signed arithmetic
 | 
						|
	jsr Div
 | 
						|
	lsr ARTH+5
 | 
						|
	ror ARTH+4	! result must be shifted one time
 | 
						|
	ldx ARTH+4
 | 
						|
	lda ARTH+5
 | 
						|
	ldy NBYTES
 | 
						|
	beq 1f		! result must be positive
 | 
						|
	jmp Ngi2
 | 
						|
    1:	rts
 | 
						|
 | 
						|
 |