Mercurial > hg > Members > kono > nitros9-code
view lib/alib/bin_dec.a @ 2765:0bd16cca86b7
Updated rules.mak for all the os9 format's to format the entire disk. People were having some issues with the disk images not being formatted to their full capacity and preventing some functions from working.
author | drencor-xeen |
---|---|
date | Thu, 17 Jan 2013 11:03:26 -0600 |
parents | 7d70b7e1cb21 |
children | aaba193af04f |
line wrap: on
line source
************************************************ * * Binary to decimal conversion * OTHER MODULES NEEDED: DECTAB$ * ENTRY: X=buffer for ascii string * D=binary value to convert * EXIT: all registers (except cc) preserved * BGP - 04/11/2009 - Fixed issue where BIN_DEC was printing negative * sign in certain cases. Cleared nega flag to fix issue. nam Binary to Decimal Conversion ttl Assembler Library Module psect BIN_DEC,0,0,0,0,0 vsect nega rmb 1 endsect BIN_SDEC: clr nega,u tsta bpl BIN_DEC sta nega,u comb coma addd #$0001 bra BIN_DEC_COMMON +++ added BGP BIN_DEC: clr nega,u +++ added BGP BIN_DEC_COMMON pshs a,b,x,y lda #7 clear out 7 bytes in buffer bindc1 clr ,x+ deca bne bindc1 ldx 2,s restore buffer start address ldd ,s get data bne bindc2 not 0, do convert lda #'0 sta ,x bra bindc8 exit bindc2 tst nega,u beq bindc25 pshs a lda #'- sta ,x+ puls a bindc25 leay DECTAB$,pcr point to conversion table clr ,--s temps, flag 1st dgt not placed bindc3 clr 1,s current digit=0 bindc4 subd ,y sub table element bcs bindc5 too far, correct inc 1,s bump digit bra bindc4 loop til done bindc5 addd ,y restore, 1 too many subtracts pshs a,b save rest of number lda 3,s get the digit adda #$30 make it ascii cmpa #'0 is it zero? bne bindc6 no, skip tst 2,s is it 1st digit in string? beq bindc7 yes, don't do leading 0s bindc6 inc 2,s indidicate at least 1 digit sta ,x+ save in buffer bindc7 leay 2,y next table entry tst 1,y end of table puls a,b restore data bne bindc3 no..loop leas 2,s bindc8 puls a,b,x,y,pc restore and return endsect