******************************************************************************
*                                                                            *
*           Printf:                                                          *
*                  => A0 FormatString                                        *
*                     A1 DataStream                                          *
*                     A2 String                                              *
*                  <= d0 Anzahl der Zeichen                                  *
*                                                                            *
*        Alle Register werden vorher gesichert! - Written by Aliso 1989      *
*                                                                            *
*       Jeder darf diese kleine Routinen kopieren! Es ist Public Domain!     *
*                                                                            *
******************************************************************************
	entry	Printf

Printf:
	movem.l	a0-a6/d1-d7,-(sp)	; Register auf Stack
	clr.l	Position		; Anz. d. Zeichern auf 0
	move.l	a2,String		; Zeiger sichern
	lea	PutChars,a2		; Routine PutChars
	lea	Return,a3		;
	move.l	4,a6			; SysBase
	jsr	-552(a6)		; RawDoFmt
	move.l	Position,d0		; Anzahl nach D0
	movem.l	(sp)+,a0-a6/d1-d7	; Register vom Stack
	rts				; und zurück
PutChars:
	movem.l	a0/d1,-(sp)		; Arbeitsregister
	move.l	String,a0		; Zeiger auf String
	move.l	Position,d1		; Position
	move.b	d0,0(a0,d1)		; Zeichern kopieren
	addq.l	Position		; Position + 1
	movem.l	(sp)+,a0/d1		; Register vom Stack
Return:					;
	rts				; und zurück
Position:	dc.l	0
String:		dc.l	0
