189 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .define _printn
 | |
| .define _printf
 | |
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| _putchar:
 | |
| 	move.w	#1,-(sp)
 | |
| 	pea	7(sp)
 | |
| 	move.w	#1,-(sp)
 | |
| 	jsr	_write
 | |
| 	add.l	#8,sp
 | |
| 	rts
 | |
| _printf:
 | |
| 	link	a6,#-12
 | |
| .sect .data
 | |
| _12:
 | |
| 	.data2	28786
 | |
| 	.data2	26990
 | |
| 	.data2	29798
 | |
| 	.data2	11875
 | |
| 	.data2	0
 | |
| .sect .text
 | |
| 	pea	8+4(a6)
 | |
| 	move.l	(sp)+,-6(a6)
 | |
| I004:
 | |
| 	move.l	8+0(a6),-(sp)
 | |
| 	move.l	(sp),-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	add	#1,a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	move.l	(sp)+,8+0(a6)
 | |
| 	move.l	(sp)+,a0
 | |
| 	clr	d0
 | |
| 	move.b	(a0),d0
 | |
| 	move.w	d0,-(sp)
 | |
| 	move.w	(sp),-(sp)
 | |
| 	move.w	(sp)+,-2(a6)
 | |
| 	move.w	#37,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	cmp	(sp)+,d0
 | |
| 	beq	I005
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	tst	(sp)+
 | |
| 	beq	I002
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	jsr	_putchar
 | |
| 	add	#2,sp
 | |
| 	jmp	I004
 | |
| I005:
 | |
| 	move.l	8+0(a6),-(sp)
 | |
| 	move.l	(sp),-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	add	#1,a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	move.l	(sp)+,8+0(a6)
 | |
| 	move.l	(sp)+,a0
 | |
| 	clr	d0
 | |
| 	move.b	(a0),d0
 | |
| 	move.w	d0,-(sp)
 | |
| 	move.w	(sp)+,-2(a6)
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	move.w	#100,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	cmp	(sp)+,d0
 | |
| 	beq	I008
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	move.w	#117,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	cmp	(sp)+,d0
 | |
| 	bne	I007
 | |
| I008:
 | |
| 	move.l	-6(a6),-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	add	#2,a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	move.l	(sp),-(sp)
 | |
| 	move.l	(sp)+,-6(a6)
 | |
| 	move.l	(sp)+,a0
 | |
| 	move.w	-2(a0),-(sp)
 | |
| 	move.w	(sp)+,-8(a6)
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	move.w	#100,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	cmp	(sp)+,d0
 | |
| 	bne	I009
 | |
| 	move.w	-8(a6),-(sp)
 | |
| 	tst	(sp)+
 | |
| 	bge	I009
 | |
| 	move.w	#0,-(sp)
 | |
| 	move.w	-8(a6),-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	move.w	(sp)+,d1
 | |
| 	sub	d0,d1
 | |
| 	move.w	d1,-(sp)
 | |
| 	move.w	(sp)+,-8(a6)
 | |
| 	move.w	#45,-(sp)
 | |
| 	jsr	_putchar
 | |
| 	add	#2,sp
 | |
| I009:
 | |
| 	move.w	-8(a6),-(sp)
 | |
| 	jsr	_printn
 | |
| 	add	#2,sp
 | |
| 	jmp	I004
 | |
| I007:
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	move.w	#115,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	cmp	(sp)+,d0
 | |
| 	bne	I004
 | |
| 	move.l	-6(a6),-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	add	#4,a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	move.l	(sp),-(sp)
 | |
| 	move.l	(sp)+,-6(a6)
 | |
| 	move.l	(sp)+,a0
 | |
| 	move.l	-4(a0),-(sp)
 | |
| 	move.l	(sp)+,-12(a6)
 | |
| I00c:
 | |
| 	move.l	-12(a6),-(sp)
 | |
| 	move.l	(sp),-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	add	#1,a0
 | |
| 	move.l	a0,-(sp)
 | |
| 	move.l	(sp)+,-12(a6)
 | |
| 	move.l	(sp)+,a0
 | |
| 	clr	d0
 | |
| 	move.b	(a0),d0
 | |
| 	move.w	d0,-(sp)
 | |
| 	move.w	(sp),-(sp)
 | |
| 	move.w	(sp)+,-2(a6)
 | |
| 	tst	(sp)+
 | |
| 	beq	I004
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	jsr	_putchar
 | |
| 	add	#2,sp
 | |
| 	jmp	I00c
 | |
| I002:
 | |
| 	unlk	a6
 | |
| 	rts
 | |
| _printn:
 | |
| 	link	a6,#-2
 | |
| .sect .data
 | |
| _15:
 | |
| 	.data2	12337
 | |
| 	.data2	12851
 | |
| 	.data2	13365
 | |
| 	.data2	13879
 | |
| 	.data2	14393
 | |
| 	.data2	0
 | |
| .sect .text
 | |
| 	move.w	8+0(a6),-(sp)
 | |
| 	move.w	#10,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	clr.l	d1
 | |
| 	move.w	(sp)+,d1
 | |
| 	divu	d0,d1
 | |
| 	move.w	d1,-(sp)
 | |
| 	move.w	(sp),-(sp)
 | |
| 	move.w	(sp)+,-2(a6)
 | |
| 	tst	(sp)+
 | |
| 	beq	I013
 | |
| 	move.w	-2(a6),-(sp)
 | |
| 	jsr	_printn
 | |
| 	add	#2,sp
 | |
| I013:
 | |
| 	pea	_15
 | |
| 	move.w	8+0(a6),-(sp)
 | |
| 	move.w	#10,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	clr.l	d1
 | |
| 	move.w	(sp)+,d1
 | |
| 	divu	d0,d1
 | |
| 	swap	d1
 | |
| 	move.w	d1,-(sp)
 | |
| 	move.w	(sp)+,d0
 | |
| 	ext.l	d0
 | |
| 	add.l	(sp)+,d0
 | |
| 	move.l	d0,-(sp)
 | |
| 	move.l	(sp)+,a0
 | |
| 	clr	d0
 | |
| 	move.b	(a0),d0
 | |
| 	move.w	d0,-(sp)
 | |
| 	jsr	_putchar
 | |
| 	add	#2,sp
 | |
| 	unlk	a6
 | |
| 	rts
 |