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)
 | |
| 
 | |
| 
 |