128 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define _printn
 | 
						|
.define _printf
 | 
						|
.extern _printf
 | 
						|
.sect .text;.sect .rom;.sect .data;.sect .bss
 | 
						|
.sect .text
 | 
						|
_putchar:
 | 
						|
move.l	#1,-(sp)
 | 
						|
lea	8(sp),a0
 | 
						|
move.l	8(sp),d0
 | 
						|
move.b	d0,(a0)
 | 
						|
move.l	a0,-(sp)
 | 
						|
move.l	#1,-(sp)
 | 
						|
jsr	_write
 | 
						|
add.l	#12,sp
 | 
						|
rts
 | 
						|
_printf:
 | 
						|
tst.b -56(sp)
 | 
						|
link	a6,#-16
 | 
						|
!Local -4 into d7
 | 
						|
!Local -12 into d6
 | 
						|
!Local -8 into a5
 | 
						|
!Local 8 into a4
 | 
						|
!Local -16 into a3
 | 
						|
movem.l d7/d6/a5/a4/a3,-(sp)
 | 
						|
move.l 8(a6),a4
 | 
						|
lea 12(a6),a1
 | 
						|
move.l a1, a5
 | 
						|
I0014:
 | 
						|
move.l a4, a0
 | 
						|
add.l #1,a4
 | 
						|
clr.l d0
 | 
						|
move.b (a0),d0
 | 
						|
move.l d0, d7
 | 
						|
cmp.l #37,d7
 | 
						|
beq I0015
 | 
						|
tst.l d7
 | 
						|
beq I0012
 | 
						|
move.l d7,-(sp)
 | 
						|
jsr _putchar
 | 
						|
add #4,sp
 | 
						|
jmp I0014
 | 
						|
I0015:
 | 
						|
move.l a4, a0
 | 
						|
add.l #1,a4
 | 
						|
clr.l d0
 | 
						|
move.b (a0),d0
 | 
						|
move.l d0, d7
 | 
						|
cmp.l #100,d7
 | 
						|
beq I0018
 | 
						|
cmp.l #117,d7
 | 
						|
bne I0017
 | 
						|
I0018:
 | 
						|
move.l a5, a0
 | 
						|
add.l #4,a5
 | 
						|
move.l (a0), d6
 | 
						|
cmp.l #100,d7
 | 
						|
bne I0019
 | 
						|
tst.l d6
 | 
						|
bge I0019
 | 
						|
clr.l d2
 | 
						|
sub.l d6,d2
 | 
						|
move.l d2, d6
 | 
						|
pea 45
 | 
						|
jsr _putchar
 | 
						|
add #4,sp
 | 
						|
I0019:
 | 
						|
move.l d6,-(sp)
 | 
						|
jsr _printn
 | 
						|
add #4,sp
 | 
						|
jmp I0014
 | 
						|
I0017:
 | 
						|
cmp.l #115,d7
 | 
						|
bne I0014
 | 
						|
move.l a5, a0
 | 
						|
add.l #4,a5
 | 
						|
move.l (a0), a3
 | 
						|
I001c:
 | 
						|
move.l a3, a0
 | 
						|
add.l #1,a3
 | 
						|
clr.l d0
 | 
						|
move.b (a0),d0
 | 
						|
move.l d0, d7
 | 
						|
tst.l d7
 | 
						|
beq I0014
 | 
						|
move.l d7,-(sp)
 | 
						|
jsr _putchar
 | 
						|
add #4,sp
 | 
						|
jmp I001c
 | 
						|
I0012:
 | 
						|
movem.l (sp)+,d7/d6/a5/a4/a3
 | 
						|
unlk a6
 | 
						|
rts
 | 
						|
.extern _printn
 | 
						|
_printn:
 | 
						|
tst.b -44(sp)
 | 
						|
link	a6,#-4
 | 
						|
!Local -4 into d7
 | 
						|
move.l d7,-(sp)
 | 
						|
.sect .data
 | 
						|
_14:
 | 
						|
.data4	808530483
 | 
						|
.data4	875902519
 | 
						|
.data4	943259648
 | 
						|
.sect .text
 | 
						|
move.l 8(a6),-(sp)
 | 
						|
pea 10
 | 
						|
jsr .dvu
 | 
						|
move.l d1, d7
 | 
						|
tst.l d7
 | 
						|
beq I0023
 | 
						|
move.l d7,-(sp)
 | 
						|
jsr _printn
 | 
						|
add #4,sp
 | 
						|
I0023:
 | 
						|
pea _14
 | 
						|
move.l 8(a6),-(sp)
 | 
						|
pea 10
 | 
						|
jsr .dvu
 | 
						|
move.l (sp)+,a1
 | 
						|
add.l d2,a1
 | 
						|
clr.l d0
 | 
						|
move.b (a1),d0
 | 
						|
move.l d0,-(sp)
 | 
						|
jsr _putchar
 | 
						|
add #4,sp
 | 
						|
move.l (sp)+,d7
 | 
						|
unlk a6
 | 
						|
rts
 |