29 lines
		
	
	
	
		
			422 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			422 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define cii
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| 
 | |
| cii:
 | |
| 	popl	saveret, *RR14
 | |
| 	pop	R2, *RR14
 | |
| 	pop	R1, *RR14
 | |
| 	sub	R2, R1		!expansion in bytes
 | |
| 	jr	LE, 1f
 | |
| 	sra	R2		!expansion in words > 0
 | |
| 	jr	NC, 2f
 | |
| 	pop	R1, *RR14	!expand	1 --> 2
 | |
| 	extsb	R1
 | |
| 	push	*RR14, R1
 | |
| 	test	R2
 | |
| 	jr	EQ, 4f
 | |
| 2:				!expand	>= 1 word
 | |
| 	ld	R1, *RR14
 | |
| 	exts	RR0
 | |
| 3:	push	*RR14, R0
 | |
| 	djnz	R2, 3b
 | |
| 	jr	4f
 | |
| 1:	sub	R15, R2
 | |
| 4:	pushl	*RR14, saveret
 | |
| 	ret
 |