36 lines
		
	
	
	
		
			511 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			511 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define .rck
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
.sect .text
 | 
						|
.rck:
 | 
						|
	pop bc
 | 
						|
	pop ix
 | 
						|
3:	pop hl
 | 
						|
	push hl
 | 
						|
	ld e,(ix)
 | 
						|
	ld d,(ix+1)
 | 
						|
	ld a,h
 | 
						|
	xor d		! check sign bit to catch overflow with subtract
 | 
						|
	jp m,1f
 | 
						|
	sbc hl,de
 | 
						|
	jr 2f
 | 
						|
1:	xor d		! now a equals (original) h again
 | 
						|
2:	call m,e.rck
 | 
						|
	pop de
 | 
						|
	push de
 | 
						|
	ld l,(ix+2)
 | 
						|
	ld h,(ix+3)
 | 
						|
	ld a,h
 | 
						|
	xor d		! check sign bit to catch overflow with subtract
 | 
						|
	jp m,1f
 | 
						|
	sbc hl,de
 | 
						|
	jr 2f
 | 
						|
1:	xor d		! now a equals (original) h again
 | 
						|
2:	call m,e.rck
 | 
						|
	push bc
 | 
						|
	pop ix
 | 
						|
	jp (ix)
 | 
						|
 | 
						|
 |