On 14 May 2013, at 16:24, Wolfgang Lenerz wrote:

> Hi,
> 
> > More or less. I was really wondering why QDOS doesn't have a vector
> > setting long words to ASCII
> 
> Perhaps this will help.
> 
> ; on entry, D0 = long int to convert to ascii
> ; A0 = space for ascii chars
> ; D1-D3,D7 : smashed
> cvtlong   CMP.L     #$80000000,D0
>          BEQ.S     oor                        ; don't convert this
>          LEA       table,A2
>          MOVEQ     #11,D1
>          MOVEQ     #0,D7
>          BTST      #31,D0              ; is it minus?
>          BEQ.S     binlop1
>          NEG.L     D0
>          BSET      #0,D7
> binlop1   SUBQ.W    #1,D1               ; get rid of excess 0s
>          CMP.L     (A2)+,D0
>          BLT.S     binlop1
>          SUBQ.L    #4,A2
>          MOVE.W    D1,(A0)+            ; this will be length of final figure
>          TST.W     D7                  ; was it minus?
>          BEQ.S     binlop2
>          ADDQ.W    #1,-2(A0)
>          MOVE.B    #'-',(A0)+
> binlop2   MOVE.L    (A2)+,D3            ; merci Thierry!
>          MOVEQ     #-$30,D2
> binlop3   SUB.L     D3,D0
>          DBMI      D2,binlop3          ; sub this until neg (i.e. subbed too 
> much)
>          NEG.B     D2
>          MOVE.B    D2,(A0)+            ; figure now
>          ADD.L     D3,D0               ; overshot one
>          DBRA      D1,binlop2          ; do it until no more...
> cvtout    MOVEQ     #0,D0
>         RTS
> 
> oor       MOVEQ     #-4,D0
>          RTS
> 
> table     dc.l      1000000000
>          dc.l      100000000
>          dc.l      10000000
>          dc.l      1000000
>          dc.l      100000
> table2    dc.l      10000
>          dc.l      1000
>          dc.l      100       ; 64
>          dc.l      10
>          dc.l      1
> 
> Wolfgang

Interesting. I used:



George
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to