	opt	 l-
* dec7
        include  OpenDos.i
	include  conout.i

PRINT   macro
        movem.l d0-d3/a6,-(sp)
	jsr	_LVOOutput(a6)		;Hole Output-Handle
	move.l	d0,d1			;Ausgabe-Handle
	move.l	\1,d2    		;Address Text
	move.l	\2,d3			;Laenge Text
	jsr	_LVOWrite(a6)		;Funktion "Schreiben"
        movem.l (sp)+,d0-d3/a6
	endm


        move     #1001,-(sp)   ;Testzahl
        pea      buffer        ;Ergebnis-Puffer
        bsr      bindec        ;Routine aufrufen
 
	PRINT    #buffer,#5		;Zahl ausgeben

	move.w	 #$0A0A,buffer		;2 Linefeeds
        PRINT    #buffer,#2


        move.l  a6,a1                   ;DOS-Lib-Basis
	move.l  _SysBase,a6		;Basis Exec
        jsr     _LVOCloseLibrary(a6)	;Funktion "Schliessen"

fini	rts				;Return zum CLI

;-----------------------------------------------------------------
bindec  move.l   4(sp),a0      ;Pufferadresse holen
        move     8(sp),d2      ;und die zu wandelnde Zahl  
        move.l   #10000,d1     ;erster Divisor
        move     #4,d3         ;Schleifenzaehler
        clr      d4            ;Flag Nullunterdrueckung
        lea      buffer,a0     ;Ergebnispuffer
        bra      out2          ;10000er wandeln
loop    divs     #10,d1        ;und nun die 1000er bis 1er
out1    swap     d2            ;Divisionsrest nach d2.w
out2    and.l    #$FFFF,d2     ;wieder auf Word
        divs     d1,d2         ;naechste Stelle
        add.b    #'0',d2       ;wandle in ASCII

        cmpi.b   #'0',d2       ;ist es eine Null?
        bne      out3          ;wenn nicht ausgeben
        tst      d4            ;Blank erlaubt?
        bne      out3          ;nein, gebe die Null aus
        move     #' ',d2       ;setze Blank ein
        bra      out4          ;und gebe aus
out3    move     #1,d4         ;Flag keine Blanks mehr
       
out4    move.b   d2,(a0)+      ;Zeichen -> Puffer
        dbra     d3,loop  
        move.b   #0,(a0)       ;Abschlusszeichen
        
        move.l   (sp)+,a0      ;hole Return-Adresse
        addq.l   #6,sp         ;Parameter vom Stack
        jmp      (a0)          ;und return


* Datenbereich:

dosname	 dc.b	'dos.library',0
	 cnop	0,2

buffer   ds.b   80
       


