;
; $Id: Printf.asm,v 1.2 1993/03/31 00:26:02 mh Stab andre $
;
; $Log: Printf.asm,v $
; Revision 1.2  1993/03/31  00:26:02  mh
; wrote RCS header.
;
;
; Printf A68K Routinen

	XDEF FmtToBuf;
; Exec.library

RawDoFmt	EQU -522

; FmtBufRec
buffer		EQU 0
buflen		EQU 4
clrProc		EQU 8
saveA5		EQU 12

	section "asm_Format",code

; PROCEDURE Format*{"FmtToBuf"}	( VAR buf{11}: 	FmtBuf;
;                                   format{8}:	ARRAY OF CHAR;
;                                   args{9}..:	LONGINT);

FmtToBuf:
	addq.l	#1,buflen(a3)
	move.l	a5,-(sp)
	move.l	a5,saveA5(a3)
	lea	FmtPCProc(pc),a2
        move.l	4,a6
        jsr	RawDoFmt(a6)
        move.l	(sp)+,a5
        rts

FmtPCProc:
	subq.l	#1,buflen(a3)
	beq	clearBuffer
	bmi	end
doWrite:
        movea.l	buffer(a3),a0
        move.b	d0,(a0)
        addq.l	#1,buffer(a3)
end:
	rts

clearBuffer
	tst.l	clrProc(a3)
        beq     end
	movem.l	d0/d2-d7/a2-a6,-(sp)
	movea.l	saveA5(a3),a5
        movea.l	clrProc(a3),a0
	jsr	(a0)
	movem.l	(sp)+,d0/d2-d7/a2-a6

	tst.l	buflen(a3)
        bgt	doWrite

noClrProc:
        rts

	END
