Mercurial > hg > Members > kono > nitros9-code
view lib/alib/dec_bin.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
**************************************** * DECIMAL to BINARY conversion routine * OTHER MODULES NEEDED: DECTAB$, IS_TERMIN * ENTRY: X = start of asci decimal string terminated by * a space, comma, CR or null. * EXIT: D = binary value * CC carry set if error (too large, not numeric) * Y = terminator or error char. nam Convert Decimal String to Binary ttl Assembler Library Module psect DEC_BIN,0,0,0,0,0 vsect nega rmb 1 endsect DEC_BIN: clra set result to 0 clrb pshs a,b,x leas -1,s temp variable clr nega,u ldb ,x+ cmpb #'- bne decbn15 stb nega,u decbn1 LDB ,X+ get a digit decbn15 LBSR IS_DIGIT bne decbn3 end of string... INCA bump string len BRA decbn1 loop for whole string decbn3 lbsr IS_TERMIN valid terminator? bne error ok TSTA length = 0? BEQ error yes, error CMPA #6 more than 6 chars? BHI error yes, error ldx 3,s get start of string again PSHS A lda ,x cmpa #'- bne decbn35 leax 1,x decbn35 LDA #5 max length SUBA ,S+ adjust for offset ASLA 2 bytes per table entry LEAY DECTAB$,PCR addr of conversion table LEAY A,Y add in offset for actual len decbn4 LDA ,X+ get a digit SUBA #$30 strip off ASCII BEQ decbn6 zero, skip sta ,s save digit=# of adds LDD 1,S get binary data decbn5 ADDD ,Y add in table value BCS error past 0, too big DEC ,S count down digit size BNE decbn5 loop til 0 STD 1,S save binary data decbn6 LEAY 2,Y next entry tst 1,y end of table? BNE decbn4 loop til done clr ,s+ clean up and clear carry bra exit error clr 0,s force data = 0 clr 1,s com ,s+ clean up and set carry exit tfr x,y end of string/error char puls a,b,x bcs leave tst nega,u beq leave subd #$0001 coma comb andcc #$FE leave rts endsect