46 lines
		
	
	
	
		
			638 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			638 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define Div4
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
.sect .text
 | 
						|
 | 
						|
! This subroutine performs a signed divide on two fourbyte integers.
 | 
						|
! For more detail see dvi.s
 | 
						|
! The only difference is that zeropage locations are twice as big.
 | 
						|
 | 
						|
Div4:
 | 
						|
	ldy #0
 | 
						|
	sty SIGN
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH
 | 
						|
	sta ARTH+1
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH+2
 | 
						|
	sta ARTH+3	! divisor in ARTH - ARTH+3
 | 
						|
	tay
 | 
						|
	bpl 1f
 | 
						|
	lda #0
 | 
						|
	ldx #ARTH
 | 
						|
	jsr Ngi4
 | 
						|
	ldy #1
 | 
						|
	sty SIGN	! it's signed
 | 
						|
    1:	jsr Pop
 | 
						|
	stx ARTH+4
 | 
						|
	sta ARTH+5
 | 
						|
	jsr Pop
 | 
						|
	stx ARTH+6
 | 
						|
	sta ARTH+7	! dividend in ARTH+4 - ARTH+7
 | 
						|
	tay
 | 
						|
	bpl 1f
 | 
						|
	lda #0
 | 
						|
	ldx #ARTH+4
 | 
						|
	jsr Ngi4
 | 
						|
	lda SIGN
 | 
						|
	eor #1
 | 
						|
	sta SIGN
 | 
						|
	lda #1
 | 
						|
	sta NBYTES
 | 
						|
    1:	jmp Duv4
 | 
						|
 | 
						|
 |